【问题标题】:How to host a web server in React Native app which can respond to GET/POST requests?如何在 React Native 应用程序中托管可以响应 GET/POST 请求的 Web 服务器?
【发布时间】:2019-03-11 16:43:00
【问题描述】:

我正在构建一个应用程序,我需要在我的 React Native 应用程序中托管一个可以响应 GET/POST/PUT/DELETE 请求的 Web 服务器。

用例:
我需要将一些数据从我的 PC 发送到我的移动应用程序(应该托管服务器),然后我将从我的移动应用程序打印这些数据。

我尝试了这些软件包,React Native http-bridgereact-native-http-server,但它们都给了我不知道如何解决的错误。

如果有人尝试过这些包中的任何一个或任何其他方式在 React-native 应用程序中设置 Web 服务器,那么请帮助:)

编辑
我有办法解决我的问题并使其中一个包正常工作,所以请在答案中查看我的解决方案。 :)

【问题讨论】:

  • 嘿@VijaySinghChouhan,感谢您的参考,但我不想在某处设置后端服务器并将其与应用程序一起使用,实际上我想做的只是它的相反,即,我想在 React Native 应用程序中设置服务器,所以当componentWillMount(),我的服务器应该开始服务,当componentWillUnmount(),我的服务器应该停止服务。这就是我想要的。

标签: android ios react-native server webserver


【解决方案1】:

解决办法:

使用React native http-bridge 包并遵循他们的文档,主要是文档的链接部分。他们实际上忘记在这一行中添加“SERVICENAME”参数:

httpBridge.start(5561, function(request) {  

所以,像这样添加参数:

httpBridge.start(5561,"SERVICENAME", function(request) {  

在此之后,服务器将在您的本机应用程序中正常工作。

【讨论】:

  • 还是不行!!我正在使用模拟器(iOS),并且我禁用了防火墙...当我执行 curl http://:5561 时,应用程序崩溃或没有响应!有什么想法吗?!
【解决方案2】:

componentWillMount() 替换为以下代码:

componentWillMount() {
  // initalize the server (now accessible via localhost:1234)
  httpBridge.start(5561, "SERVICENAME", function(request) {

      // you can use request.url, request.type and request.postData here
      if (request.type === "GET" && request.url.split("/")[1] === "users") {
        httpBridge.respond(request.requestId, 200, "application/json", "{\"message\": \"OK\"}");
      } else {
        httpBridge.respond(request.requestId, 400, "application/json", "{\"message\": \"Bad Request\"}");
      }

  });
}

测试:

curl <device_ip_address>:5561/users -v

你应该得到:

{"message": "OK"}

参考:https://github.com/alwx/react-native-http-bridge/issues/15

【讨论】:

  • 嘿,“bonjourName”只是一个字符串,它可以是任何东西。就像我在回答中提到的“SERVICENAME”,它和你做的一样。我敢肯定,由于您的应用程序崩溃了,您可能正在做其他事情。
  • @saberprashant 我在 httpBridge.respond() 中缺少“SERVICENAME”和 request.requestId
  • 好的@Slipstream,我很高兴字符串解决方案对您有用。干杯哥们:)
  • @saberprashant 如果我从该本地服务器上托管的 html 表单发送发布请求。我如何访问该数据示例:w3schools.com/tags/tryit.asp?filename=tryhtml_form_method_post ifi 我使用此表单如何访问 fname 和 lname?我试过 request.postData 我得到未定义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多