我正在学习此 YouTube 视频中有关将 Go 后端与 Flutter 集成的教程。尽管严格遵循说明,我仍无法将数据从后端检索到我的 Flutter 应用程序中。本教程的作者建议使用
response.statusCode
打印 HTTP 状态代码来调试,但我不确定如何在 Go 中实现这一点。
背景:
我对 Go 比较陌生,正在开发一个涉及为 Flutter 应用程序设置后端服务的项目。目标是在 Flutter 前端和 Go 后端之间发送和接收数据。在测试时,我遇到了数据检索问题,建议我检查 HTTP 状态代码来诊断问题。
代码:
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
)
type Tasks struct {
ID string `json:"id"`
TaskName string `json:"task_name"`
TaskDetail string `json:"detail"`
Date string `json:"date"`
}
var tasks []Tasks
func allTasks() {
// Code for initializing tasks omitted for brevity
}
func homePage(w http.ResponseWriter, r *http.Request) {
fmt.Println("I am home page")
}
func getTasks(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(tasks)
}
// Other handlers omitted for brevity
func handleRoutes() {
router := mux.NewRouter()
// Routes setup omitted for brevity
log.Fatal(http.ListenAndServe(":3306", router))
}
func main() {
allTasks()
handleRoutes()
}
我尝试过的:
问题:
如何修改 Go 代码以在发出请求时打印 HTTP 状态代码?我相信了解如何正确记录这些状态代码将帮助我调试 Flutter 前端的连接问题。
你好@rqb,这是来自 flutter 的代码
data_controller.dart:
import 'package:flutter_golang_yt/services/service.dart';
import 'package:get/get.dart';
class DataController extends GetxController{
DataService service = DataService();
bool _isLoading = false;
bool get isLoading=> _isLoading;
List<dynamic> _myData=[];
List<dynamic> get myData=>_myData;
Future<void> getData() async {
_isLoading = true;
Response response = await service.getData();
if(response.statusCode==200){
_myData=response.body;
print("we got the data");
update();
}else{
print(response.statusCode.toString());
}
}
Future<void> postData(String task, String taskDetail) async {
_isLoading = true;
Response response = await service.postData({
"task_name":task,
"task_detail": taskDetail
});
if(response.statusCode==200){
update();
print("data post successfully");
}else{
print("data post failed");
}
}
}
和 services.dart:
import 'package:get/get.dart';
class DataService extends GetConnect implements GetxService{
Future<Response> getData()async{
Response response=await get(
"http://localhost:3306/gettasks",
headers: {
'Content-Type':'application/json; charset=UTF-8'
}
);
return response;
}
Future<Response> postData(dynamic body)async{
Response response=await post(
"http://localhost:3306/create",
body,
headers: {
'Content-Type':'application/json; charset=UTF-8'
}
);
return response;
}
}
终端显示:
[GETX] Instance "DataController" has been created
[GETX] Instance "DataController" has been initialized
[GETX] Instance "GetMaterialController" has been created
[GETX] Instance "GetMaterialController" has been initialized
I/flutter (15548): null