我正在为我们的应用程序开发一个新的RESTful Web服务.
在某些实体上执行GET时,客户端可以请求实体的内容.如果他们想要添加一些参数(例如排序列表),他们可以在查询字符串中添加这些参数.
或者,我希望人们能够在请求正文中指定这些参数. HTTP/1.1似乎没有明确禁止这一点.这将允许他们指定更多信息,可以更容易指定复杂的XML请求.
我的问题:
在HTTP GET请求中,参数作为查询字符串发送:
http://example.com/page?parameter=value&also=another
在HTTP POST请求中,参数不会与URI一起发送.
价值在哪里?在请求标题中?在请求机构?它是什么样子的?
是否允许HTTP标头允许的最大允许大小?如果是这样,它是什么?如果没有,这是特定于服务器的东西,还是允许任何大小的标题的公认标准?
我一直在收到nginx错误:
413 Request Entity Too Large
Run Code Online (Sandbox Code Playgroud)
我已经能够将client_max_body_size我的nginx.conf文件的服务器部分更新为20M,这解决了这个问题.但是,默认的nginx是client_max_body_size什么?
我有json发布数据与下面的模板
{
"themeId" : JSONString,
"themeName" : JSONString,
"tables" : [{
"tableName" : JSONString,
"records" : [{
"recordVersion" : JSONString,
"tableItems" : []
}]
}]
}
Run Code Online (Sandbox Code Playgroud)
在Java方面,我有这样的REST API:
@POST
@Path("/{themeId}")
@Consumes({MediaType.APPLICATION_JSON})
public Response postTheme( @PathParam("themeId") String themeId, ThemeDictionary dictionary) throws InterruptedException {
//code to handle
}
Run Code Online (Sandbox Code Playgroud)
当发布数据小于2 MB但如何处理大于2 MB的数据大小时,它工作正常.
问题
1)我应该加入分页.
2)如果我把json分成两半,那么每一半都不是有效的json.那么,我应该接受字符串并在服务器端连接吗?
3)是否有任何好的例子来处理这种情况
4)寻找可以处理大小小于或大于2 MB的json数据的方法
我正在尝试将大型excel文件发送到其余服务(使用servicestack).
客户端和服务器(Servicestack服务)应用程序部署在不同的服务器上.
我在客户端使用以下代码上传excel文件(8 MB大小)
取自
http://www.codeproject.com/Articles/501608/Sending-Stream-to-ServiceStack
HttpWebRequest client = (HttpWebRequest)WebRequest
.Create(ConfigurationManager
.AppSettings["applicationUrl"]
+ @"/servicename/"
+ fileUpload.FileName
+ @"/" + FileType + @"/"
+ Utility.UserName + @"/"
+ Utility.EmployerID + @"/"
+ UploadedFrom);
client.Method = WebRequestMethods.Http.Post;
////the following 4 rows enable streaming
client.AllowWriteStreamBuffering = false;
client.SendChunked = true;
client.ContentType = "multipart/form-data;";
client.Timeout = int.MaxValue;
// client.KeepAlive = false;
//client.ProtocolVersion = HttpVersion.Version10;
//client.ContentLength = 0;
//client.Timeout = Timeout.Infinite;
//client.AllowWriteStreamBuffering = true;
Stream stream = fileUpload.InputStream;
if (stream.CanRead)
{ stream.Copy(client.GetRequestStream());
}
var response …Run Code Online (Sandbox Code Playgroud) 我有一个fetch POST正在发送一个大的 JSON 对象:
const body = JSON.stringify(largeItem); // 80MB
const request = new Request(uri, {
mode: 'cors',
method: 'POST',
headers: new Headers({ 'Content-Type': 'application/json' }),
credentials: 'same-origin',
body
});
const response = await fetch(request);
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
source-file.ts:72 Uncaught (in promise) TypeError: Failed to fetch
当我在开发工具中查看此请求时,它看起来不完整 - 没有请求正文,并且大多数请求标头都丢失了。此外,它的错误没有状态代码,而是状态为:
(failed) net::ERR_CONNECTION_RESET
使用相同凭据对同一资源进行许多其他GET请求都可以正常工作。POST此代码适用于较小的body.
如何使用POST大型(本例中为 80MB)JSON 正文发出请求?
我有一个html表单,大约有1500个输入字段*(文本或隐藏).form.action是POST,每个inputfield都有一个唯一的名称(没有name = foo []).
每当我在提交表单后尝试在PHP中打印$ _REQUEST的每个变量时,只打印前几个条目.实际上,$ _REQUEST变量只包含1001个项目(因此缺少大约500个字段).
知道为什么会这样吗?
由于数据是通过post而不是get发送的,因此url-limit不是问题.所以我认为它与网络服务器的配置有关,而且请求太大了.但是将LimitRequestBody设置为0并不会改变结果中的任何内容.
就这个PHP数组使用的内存而言,我只读到大小仅受总体内存的限制,这应该足够了.(每个键大约20个,每个值约为6个)
我错过了什么吗?
*如果你想知道:导航包含大约750个条目,每个条目2个字段(一个位置用于排序,一个用于父级,如果嵌套)
我被困在文件上传问题.我搜索了答案,但发现只有"增加post_max_size和upload_max_filesize"的建议,这对我不起作用.我无法上传大文件(大约150mb +),以下是我的php.ini设置和我的环境
php.ini中
- max_input_time 300
- max_execution_time 600
- memory_limit 1024M
- upload_max_filesize 1512M
- post_max_size 2048M
Run Code Online (Sandbox Code Playgroud)
环境
- Webserver: XAMPP
- PHPFramwork: CodeIgniter
Run Code Online (Sandbox Code Playgroud)
我也尝试了很多其他的php.ini配置.我构建的文件上传类使用xhr.send(文件)从XmlHttpResponse请求中发布了文件数据.我用firebug标头调试了infos是正常的,post完全是空的(通常应该是文件数据,可读文本),cookies是ci_session cookie,而且根本没有xhr响应文本.我编写了一个脚本,无论如何都会返回一些响应.
我不是这方面的专家,而是新手.我掌握的所有信息都可以给你们.那么,关于这件事发生的任何想法?我真的卡在这里无法解决这个问题.
如果有任何我可以寻找的信息并且给你解决这个问题请告诉我.
thx提前.
我知道发送请求正文时json的大小有限制,但我没有找到任何具体内容。
http ×4
rest ×3
json ×2
php ×2
arrays ×1
asp.net ×1
browser ×1
c# ×1
fetch-api ×1
http-get ×1
http-headers ×1
httprequest ×1
input ×1
java ×1
java-ee ×1
javascript ×1
jersey ×1
large-files ×1
nginx ×1
parameters ×1
post ×1
request ×1
servicestack ×1
upload ×1
uri ×1
url ×1
websphere ×1