如何解决POST 在与响应正文相同的请求中返回结果cpp REST POST SDK
解释我的问题的背景。我的应用程序通过 Flask 服务器连接到制造执行系统 (MES)。我使用 Postman 调试我的工作。
我有一个监听 MES 的示例,当 MES 向我的应用程序发送 (POST) 订单时,我成功捕获它,将 JSON 解析为我自己的数据结构。我自己的算法来处理这个数据结构,结果需要作为JSON返回给MES。
当我使用两部分时,MES 发送一个 POST,当 MES 发送一个 GET 时,我捕获并返回结果,它工作正常。但是现在我被要求在没有 MES 的情况下自动返回结果向我发送 GET 请求,我想是为了加快处理流程,因为订单的大小可能会有所不同,我的算法对于小订单也可以很快,而对于大订单则需要更长的时间.
任何人都有一些例子可以说明我的情况或提供一些帮助。
我正在使用以下内容
http_client client(server_http_test);
try {
HTTP_Request request_get(methods::GET);
pplx::task<void> task = client.request(request_get)
.then([](http_response response)-> pplx::task<web::json::value>
{
if(response.status_code() == RESPONSE_OK)
{
return response.extract_json();
}
else
{
return pplx::task_from_result(web::json::value());
};
}).then([](pplx::task<web::json::value> prevIoUsTask)
我使用 JSON 获取
if(!prevIoUsTask.get().is_null()) {
//const web::json::value & json_value = prevIoUsTask.get();
// Assign the requested Json value to a global variable
j_value = prevIoUsTask.get(); // json_value;
}
然后我在将 j_value JSON 解析为我自己的数据结构后使用我的算法来处理它。现在这是我需要将结果返回到同一服务器(IP/端口)但没有任何 GET/POST 的地方......只是直接......我不知道如何实现......
然后我完成了试用部分
}
catch(const http_exception &e)
{
std::cout << "Response Json Value Level: Error exception: " << e.what() << std::endl;
}
});
我的 Flask 服务器由 python 脚本调用(从命令行作为 python rest_request_server.py)
@app.route('/DataTransfer',methods=['GET','POST'])
def datatransfer():
global json_data
if(request.method == 'GET'):
print ("request.method = GET")
return jsonify(json_data)
#if(request.method == 'POST'):
# print ("request.method = POST")
# return jsonify(json_data_post)
#if(request.method == 'POST'):
else:
print("request.method = POST")
temp_data = request.get_json()
if(temp_data != json_data):
json_data = temp_data
return "Input captured"
else:
return jsonify(json_data)
# return "Please send get request"
if __name__ == '__main__':
app.run(host = ServerIP,port=ServerPort,debug=True,use_reloader=False)
解决方法
我最终只使用 Flask 服务器并直接调用我的打包优化器,而无需它通过 REST 进行通信……Flask 现在正确地将结果返回给 MES。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。