使用API​​将数据发送到Springboot服务器的最佳方法是什么?

发布于 2025-02-12 20:50:20 字数 58 浏览 2 评论 0原文

我正在开发一个Flutter移动应用程序,我想知道将数据发送到Springboot服务器的最清洁方法。

I'm working on a flutter mobile app and I'm wondering about the cleanest way to send data to a springboot server.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

允世 2025-02-19 20:50:20

在这里,我们确实使用Flutter http package 以获取/使用来自API的数据。

这是一个例子

import 'package:flutter/material.dart';
import 'dart:convert' as convert;

import 'package:http/http.dart' as http;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Welcome to My App",
      home: AppBody(),
    );
  }
}

class AppBody extends StatefulWidget {
  @override
  _AppBodyState createState() => _AppBodyState();
}

class _AppBodyState extends State<AppBody> {
  final apiURL = "localhost:8080";
  final path = "/api/posts/read?search=shyam&start=1&limit=100";
  late var url;
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    // url = Uri.http(apiURL, path);
    // url = Uri.http(apiURL+path);
    url = Uri.http(amazonUri, path);
    getData();
  }

  Future<void> getData() async {
    var response = await http.get(url);
    if (response.statusCode == 200) {
      print("Data obtained successfully");
      print(response.body);
    } else {
      print("Issues with APIs");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        leading: Icon(Icons.agriculture),
        title: Text("App Bar"),
      ),
      body: Container(
        child: Center(
          child: Text("Hello world"),
        ),
      ),
    );
  }
}

Here we do use flutter http package to obtain/ work with data from apis.

Here's an example

import 'package:flutter/material.dart';
import 'dart:convert' as convert;

import 'package:http/http.dart' as http;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Welcome to My App",
      home: AppBody(),
    );
  }
}

class AppBody extends StatefulWidget {
  @override
  _AppBodyState createState() => _AppBodyState();
}

class _AppBodyState extends State<AppBody> {
  final apiURL = "localhost:8080";
  final path = "/api/posts/read?search=shyam&start=1&limit=100";
  late var url;
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    // url = Uri.http(apiURL, path);
    // url = Uri.http(apiURL+path);
    url = Uri.http(amazonUri, path);
    getData();
  }

  Future<void> getData() async {
    var response = await http.get(url);
    if (response.statusCode == 200) {
      print("Data obtained successfully");
      print(response.body);
    } else {
      print("Issues with APIs");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        leading: Icon(Icons.agriculture),
        title: Text("App Bar"),
      ),
      body: Container(
        child: Center(
          child: Text("Hello world"),
        ),
      ),
    );
  }
}
奢欲 2025-02-19 20:50:20

我不知道这是否是最干净的方式,但是您可以使用REST API从/将数据从/发送到SpringBoot服务器。

有关更多信息: https://medium.com/nerd-for-tech/flutter-series-connecting-ui-to-spring-boot-boot-backend-f9874dc3dcd5

用于扑朔迷离的项目结构,您可以使用bloc或bloc或任何其他国家管理。

I don't know whether it will be the cleanest way or not but you can use REST APIs to get/send data from/to Springboot Server.

For more information: https://medium.com/nerd-for-tech/flutter-series-connecting-ui-to-spring-boot-backend-f9874dc3dcd5

For your Flutter Project structure, you can use BLoC or any other state management.

趁年轻赶紧闹 2025-02-19 20:50:20

您可以将Spring用作RESTAPI,它具有HTTP方法之类的逻辑(获取,发布,put,Delete ..)。
(使用RestFulapi很多原因,原因之一是用于各种客户端。(移动,Web,Pad,..))

您可以在URI,Header或Body中的查询字符串上将数据从客户端发送到服务器。

You can use spring as RestAPI which has logic something like http method(get, post, put, delete..).
(RestfulAPI is used many reason, one of reason is for various client.(mobile, web, pad,..))

You can send data from client to server on query string in uri, header or body.

深巷少女 2025-02-19 20:50:20
**you can use dio packge for any kind of apis its easy and best and you do not need any kind maping it will be by dio package own its own **
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:dio/dio.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:rent_house/screens/Navigation/navBar.dart';

Future<String> signupApis({
  name,
  email,
  conatact,
  address,
  password,
  type,
  context,
}) async {
  // isloading:true;
  var apiURL = 'https://denga.r3therapeutic.com/public/api/register';

  var formData = FormData.fromMap({
    'name': name,
    'email': email,
    'contact': conatact,
    'address': address,
    'password': password,
    'type': type,
  });
  //final prefs = await SharedPreferences.getInstance();

  Dio dio = Dio();
  Response responce;
  try {
    responce = await dio.post(
      apiURL,
      data: formData,
    );

   // print("response datra " + responce.toString());
   
    SharedPreferences pref = await SharedPreferences.getInstance();
    var res1 = responce.data['user'];
    var token = res1['token'];

    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => Navbar()),
    );
    Fluttertoast.showToast(
        msg: "Login Successfull", backgroundColor: Colors.cyan);
    return '';
  } catch (e) {
    Fluttertoast.showToast(
        msg: "User Already exists", backgroundColor: Colors.cyan);
    return 'some thing wrong';
  }
}
**you can use dio packge for any kind of apis its easy and best and you do not need any kind maping it will be by dio package own its own **
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:dio/dio.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:rent_house/screens/Navigation/navBar.dart';

Future<String> signupApis({
  name,
  email,
  conatact,
  address,
  password,
  type,
  context,
}) async {
  // isloading:true;
  var apiURL = 'https://denga.r3therapeutic.com/public/api/register';

  var formData = FormData.fromMap({
    'name': name,
    'email': email,
    'contact': conatact,
    'address': address,
    'password': password,
    'type': type,
  });
  //final prefs = await SharedPreferences.getInstance();

  Dio dio = Dio();
  Response responce;
  try {
    responce = await dio.post(
      apiURL,
      data: formData,
    );

   // print("response datra " + responce.toString());
   
    SharedPreferences pref = await SharedPreferences.getInstance();
    var res1 = responce.data['user'];
    var token = res1['token'];

    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => Navbar()),
    );
    Fluttertoast.showToast(
        msg: "Login Successfull", backgroundColor: Colors.cyan);
    return '';
  } catch (e) {
    Fluttertoast.showToast(
        msg: "User Already exists", backgroundColor: Colors.cyan);
    return 'some thing wrong';
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文