是否存在用于从API构造JSON响应的标准或最佳实践?显然,每个应用程序的数据都是不同的,所以我不关心,而是"响应样板",如果你愿意的话.我的意思的一个例子:
成功要求:
{
"success": true,
"payload": {
/* Application-specific data would go here. */
}
}
Run Code Online (Sandbox Code Playgroud)
请求失败:
{
"success": false,
"payload": {
/* Application-specific data would go here. */
},
"error": {
"code": 123,
"message": "An error occurred!"
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试围绕我公司正在开发的api编写一个包装器.它很安静,使用Postman我可以发送一个帖子请求到一个端点,比如http://subdomain.dev.myapi.com/api/v1/auth/
使用用户名和密码作为POST数据,我会收到一个令牌.一切都按预期工作.现在,当我尝试从PHP执行相同操作时,我会返回一个GuzzleHttp\Psr7\Response
对象,但似乎无法在其中的任何位置找到令牌,就像我对Postman请求所做的那样.
相关代码如下:
$client = new Client(['base_uri' => 'http://companysub.dev.myapi.com/']);
$response = $client->post('api/v1/auth/', [
'form_params' => [
'username' => $user,
'password' => $password
]
]);
var_dump($response); //or $resonse->getBody(), etc...
Run Code Online (Sandbox Code Playgroud)
上面代码的输出看起来像(警告,传入文本墙):
object(guzzlehttp\psr7\response)#36 (6) {
["reasonphrase":"guzzlehttp\psr7\response":private]=>
string(2) "ok"
["statuscode":"guzzlehttp\psr7\response":private]=>
int(200)
["headers":"guzzlehttp\psr7\response":private]=>
array(9) {
["connection"]=>
array(1) {
[0]=>
string(10) "keep-alive"
}
["server"]=>
array(1) {
[0]=>
string(15) "gunicorn/19.3.0"
}
["date"]=>
array(1) {
[0]=>
string(29) "sat, 30 may 2015 17:22:41 gmt"
}
["transfer-encoding"]=>
array(1) {
[0]=>
string(7) "chunked"
}
["content-type"]=>
array(1) {
[0]=> …
Run Code Online (Sandbox Code Playgroud) 有没有办法从IIS7中删除"服务器"响应头?有一些文章显示使用HttpModules我们可以实现同样的目的.如果我们没有服务器的管理权限,这将非常有用.另外我不想写ISAPI过滤器.
我有我的服务器的管理员权限.所以我不想做上面的事情.所以,请帮我做同样的事.
我的脚本由服务器调用.从服务器我会收到ID_OF_MESSAGE
和TEXT_OF_MESSAGE
.
在我的脚本中,我将处理传入的文本并使用params生成响应:ANSWER_TO_ID
和RESPONSE_MESSAGE
.
问题是我正在向incomming发送响应"ID_OF_MESSAGE"
,但是在收到http响应200之后,向我发送消息的服务器将把他的消息设置为发送给我(这意味着我可以发送给他的响应).
解决方案之一是将消息保存到数据库并制作一些将每分钟运行的cron,但我需要立即生成响应消息.
是否有一些解决方案如何发送到服务器http响应200而不是继续执行PHP脚本?
非常感谢
抛出此方法
java.lang.IllegalStateException:在提交响应后无法转发
我无法发现问题.有帮助吗?
int noOfRows = Integer.parseInt(request.getParameter("noOfRows"));
String chkboxVal = "";
// String FormatId=null;
Vector vRow = new Vector();
Vector vRow1 = new Vector();
String GroupId = "";
String GroupDesc = "";
for (int i = 0; i < noOfRows; i++) {
if ((request.getParameter("chk_select" + i)) == null) {
chkboxVal = "notticked";
} else {
chkboxVal = request.getParameter("chk_select" + i);
if (chkboxVal.equals("ticked")) {
fwdurl = "true";
Statement st1 = con.createStatement();
GroupId = request.getParameter("GroupId" + i);
GroupDesc = request.getParameter("GroupDesc" + i); …
Run Code Online (Sandbox Code Playgroud) servlets response forward illegalstateexception requestdispatcher
if-modified-since和if-none-match之间可能有什么区别?我有一种感觉,if-none-match用于文件,而if-modified-since用于页面?
有没有办法返回make_response()
具有某些属性的响应(来自对象或类似),以便它不会再次呈现页面,也不会执行任何其他操作.我试图在服务器上运行代码而不生成任何输出
一个简单的'return None'产生:
ValueError: View function did not return a response
Run Code Online (Sandbox Code Playgroud)
这应该是可能的,因为以下只下载文件而不呈现模板:
myString = "First line of a document"
response = make_response(myString)
response.headers["Content-Disposition"] = "attachment; filename=myFile.txt"
return response
Run Code Online (Sandbox Code Playgroud) 我仍然是jQuery和ajax场景的新手,但我有一个$ .ajax请求执行GET来检索一些XML文件(大约6KB或更少),但是在用户花费在该页面上的持续时间内,XML内容应该是不会/不会改变(这个设计我无法改变,我也无权更改XML文件,因为我正在从其他地方读取它).因此,我有一个全局变量,我将响应数据存储到其中,并且对此数据的任何后续查找都在此变量上完成,因此不需要进行多个请求.
鉴于XML文件可以增加的事实,我不确定这是最佳实践,并且也来自java背景我对全局公共变量的想法通常是禁止的.
所以我的问题是,是否有更好的方法可以做到这一点,以及一个问题,如果文件扩展到一些荒谬的文件大小,这是否会导致任何内存问题?
我认为数据可以传递到xml对象中的一些getter/setter类型函数,这将解决我的全局公共变量问题,但仍然提出了我是否应该将响应存储在对象本身内的问题.
例如,我目前所做的是:
// top of code
var xml;
// get the file
$.ajax({
type: "GET",
url: "test.xml",
dataType: "xml",
success : function(data) {
xml = data;
}
});
// at a later stage do something with the 'xml' object
var foo = $(xml).find('something').attr('somethingElse');
Run Code Online (Sandbox Code Playgroud) 我见过的HTTP报头Content-Language
和Accept-Language
,可能有人解释这是什么意思了,它们之间的区别?我有一个多语言网站,并想知道我应该由用户设置两个网站当前选定的语言.
问题
我一直在寻找Express.js的请求/响应超时,但一切似乎都与连接有关,而不是请求/响应本身.
如果请求需要很长时间,则应该超时.显然这不应该发生,但即使是一个简单的错误,因为如果没有调用回调或不使用路由处理程序res.send()
,浏览器将一直等待回复.
空路由处理程序就是一个很好的例子.
app.get('/sessions/', function(req, res, callback){});
Run Code Online (Sandbox Code Playgroud)
固定
之前 我添加了以下内容app.use(app,router);
,它似乎添加了超时功能.有没有人对此有任何经验/意见?
app.use(function(req, res, next){
res.setTimeout(120000, function(){
console.log('Request has timed out.');
res.send(408);
});
next();
});
Run Code Online (Sandbox Code Playgroud)
请注意,我已将超时设置为2分钟.