相关疑难解决方法(0)

REST URI约定 - 创建资源时的单数或复数名称

我是REST的新手,我发现在一些RESTful服务中,他们使用不同的资源URI进行更新/获取/删除和创建.如

  • 创建 - 使用/ resource(单数)在某些地方使用POST方法(观察复数)使用/ resources
  • 更新 - 使用/ resource/123和PUT方法
  • 获取 - 使用/ resource/123和GET方法

我对这个URI命名约定有点困惑.我们应该使用复数或单数来创建资源?决定时应该有什么标准?

rest resources uri naming-conventions

491
推荐指数
15
解决办法
16万
查看次数

使用Ajax以一种形式上传数据和文件?

我正在使用jQuery和Ajax为我的表单提交数据和文件,但我不确定如何以一种形式发送数据和文件?

我目前对这两种方法的做法几乎相同,但数据收集到数组的方式不同,数据使用.serialize();但文件使用= new FormData($(this)[0]);

是否可以将两种方法结合起来,以便能够通过Ajax以一种形式上传文件和数据?

数据jQuery,Ajax和html

$("form#data").submit(function(){

    var formData = $(this).serialize();

    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});

<form id="data" method="post">
    <input type="text" name="first" value="Bob" />
    <input type="text" name="middle" value="James" />
    <input type="text" name="last" value="Smith" />
    <button>Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

文件jQuery,Ajax和html

$("form#files").submit(function(){

    var formData = new FormData($(this)[0]);

    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data) …
Run Code Online (Sandbox Code Playgroud)

javascript forms ajax jquery

359
推荐指数
6
解决办法
50万
查看次数

如何使用REST Web服务上载包含元数据的文件?

我有一个REST Web服务,目前公开此URL:

HTTP://服务器/数据/媒体

用户可以POST使用以下JSON:

{
    "Name": "Test",
    "Latitude": 12.59817,
    "Longitude": 52.12873
}
Run Code Online (Sandbox Code Playgroud)

为了创建新的媒体元数据.

现在我需要能够在媒体元数据的同时上传文件.解决这个问题的最佳方法是什么?我可以引入一个名为filebase64 的新属性编码文件,但我想知道是否有更好的方法.

还有multipart/form-data像HTML表单一样使用,但我正在使用REST Web服务,我想尽可能坚持使用JSON.

rest json web-services file-upload

233
推荐指数
6
解决办法
23万
查看次数

REST API - 文件(即图像)处理 - 最佳实践

我们正在使用REST API开发服务器,它接受并使用JSON进行响应.问题是,如果您需要将图像从客户端上传到服务器.

另请注意,我在讨论用例,其中实体(用户)可以拥有文件(carPhoto,licensePhoto),还有其他属性(名称,电子邮件...),但是当您创建新用户时,您不会发送这些图像,它们是在注册过程后添加的.


我所知道的解决方案,但每个都有一些缺陷

1.使用multipart/form-data而不是JSON

:POST和PUT请求尽可能是RESTful,它们可以包含文本输入和文件.

缺点:它不再是JSON,与multipart/form-data相比,它更容易测试,调试等

2.允许更新单独的文件

用于创建新用户的POST请求不允许添加图像(在我们的用例中我在开始时的说法是可以的),上传图片是通过PUT请求作为multipart/form-data完成的,例如/ users/4/carPhoto

好的:一切(除了文件上传本身)都保留在JSON中,它很容易测试和调试(你可以记录完整的JSON请求而不用担心它们的长度)

缺点:它不直观,您不能一次POST或PUT实体的所有变量,并且此地址/users/4/carPhoto可以更多地被视为一个集合(REST API的标准用例看起来像这样/users/4/shipments).通常你不能(也不想)GET/PUT实体的每个变量,例如users/4/name.您可以使用GET获取名称,并在用户/ 4处使用PUT进行更改.如果在id之后有什么东西,它通常是另一个集合,比如users/4/reviews

3.使用Base64

将其作为JSON发送,但使用Base64编码文件.

good:与第一个解决方案相同,它尽可能地提供RESTful服务.

缺点:再次,测试和调试更糟糕(正文可以有兆字节数据),大小和处理时间都有所增加 - 客户端和服务器


我真的很想使用解决方案.2,但它有它的缺点...任何人都可以让我更好地了解"什么是最好的"解决方案?

我的目标是使用尽可能多的标准来提供RESTful服务,同时我希望尽可能简化它.

rest json file-upload restful-architecture

140
推荐指数
4
解决办法
9万
查看次数

Spring:JSON数据和文件在同一个请求中

我知道如何创建使用MediaType.MULTIPART_FORM_DATA和处理文件的端点@FormDataParam("file") FormDataBodyPart bodyPart,但我想知道我是否也可以在该请求中拥有JSON数据?就像是:

    @POST
    @Path("somepath")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFileAndJSON(@RequestBody SomeModel someModel,
                                      @FormDataParam("file") FormDataBodyPart bodyPart) { 
         return null;
    }
Run Code Online (Sandbox Code Playgroud)

目前,如果我在以下邮递员请求的"原始"选项卡上添加一些JSON数据,我HTTP 415 Unsupported Media Type可能因为我指定我消费MULTIPART_FORM_DATA但我也在使用@RequestBody哪个正在寻找JSON内容APPLICATION_JSON.那么如何在同一个请求中处理JSON数据和文件呢?我知道可以在两个请求中执行此操作,如果可能,我只想在一个请求中执行此操作?

在此输入图像描述

java rest spring json multipartform-data

9
推荐指数
1
解决办法
8127
查看次数

将文件和JSON数据发布到Spring休息服务

我正在构建一个Spring rest服务来上传文件.有一个表单由各种字段和一个字段组成,用于上传文件.在提交这种形式,我送一个,即多形式要求Content-Type作为multipart/form-data.

所以我尝试了以下

@RequestMapping(value = "/companies", method = RequestMethod.POST)
    public void createCompany(@RequestBody CompanyDTO companyDTO, @RequestParam(value = "image", required = false) MultipartFile image){
.................   
Run Code Online (Sandbox Code Playgroud)

但是,上述方法无效.所以暂时,我将JSON数据作为String发送,并在休息服务中从该String形成公司对象

 @RequestMapping(value = "/companies", method = RequestMethod.POST)
        public void createCompany(@RequestParam("companyJson") String companyJson, @RequestParam(value = "image",required = false) MultipartFile image) throws JsonParseException, JsonMappingException, IOException{
            CompanyDTO companyDTO =  new ObjectMapper().readValue(companyJson, CompanyDTO.class);
.............................
Run Code Online (Sandbox Code Playgroud)

我不能在不将JSON作为String传递的情况下使用@RequestBody发送JSON数据吗?

java rest spring json multipartform-data

5
推荐指数
1
解决办法
1万
查看次数

为什么使用 FastAPI 上传图像时会收到“无法处理的实体”错误?

我正在尝试上传图像,但 FastAPI 返回时出现一个我无法弄清楚的错误。

file: UploadFile = File(...)如果我从函数定义中省略“ ”,它就会正常工作。但是当我将 the 添加file到函数定义中时,它会抛出错误。

这是完整的代码。

@router.post('/', response_model=schemas.PostItem, status_code=status.HTTP_201_CREATED)
def create(request: schemas.Item, file: UploadFile = File(...), db: Session = Depends(get_db)):

    new_item = models.Item(
        name=request.name,
        price=request.price,
        user_id=1,
    )
    print(file.filename)
    db.add(new_item)
    db.commit()
    db.refresh(new_item)
    return new_item
Run Code Online (Sandbox Code Playgroud)

Pydantic模型Item只是

class Item(BaseModel):
    name: str
    price: float
Run Code Online (Sandbox Code Playgroud)

错误是:
代码 422 错误:无法处理的实体

{
  "detail": [
    {
      "loc": [
        "body",
        "request",
        "name"
      ],
      "msg": "field required",
      "type": "value_error.missing"
    },
    {
      "loc": [
        "body",
        "request",
        "price"
      ],
      "msg": "field required", …
Run Code Online (Sandbox Code Playgroud)

python python-3.x fastapi

5
推荐指数
1
解决办法
5126
查看次数

REST API放置大数据

我在Microsoft Web API中实现了REST API.
在我的客户端,我使用HttpRequestMessage和HttpResponseMessage.
当我发送一个小类时,我将它序列化为JSON然后发送它.
很快,我的班级变得更大,我需要JSON这个类,压缩它(在内存中)并发送到服务器.我不能再使用相同的技术,我需要发送块的zip.

实现它的正确方法是什么?我已经阅读了这篇文章,将文件和相关数据发布到RESTful WebService,最好是JSON

需要一些好文章,我不知道从哪里开始.

.net c# rest asp.net-web-api

4
推荐指数
1
解决办法
5918
查看次数

字符串转换为 ActionDispatch::Http::UploadedFile

有没有办法将字符串转换为ActionDispatch::Http::UploadedFile

我需要它能够在 API 请求中传递文件路径来处理将 Excel 插入数据库的操作,因为我想使用 REST API 而不是浏览器来上传文件。

谢谢

ruby api rest ruby-on-rails

4
推荐指数
1
解决办法
2415
查看次数