Api platform 教程4---json格式为什么报错了呢?

Mario Sanchez

20 people read
Thumbnail

Api platform 教程4---json格式为什么报错了呢?

在api文档界面我们使用POST端点成功的提交了一条数据,增删改查也没问题,是的,这就是普通的CRUD。

但是实际场景中我们是在API文档里进行所有操作吗?我们会写APP、web....,我们还会用postman或其它工具。

接下来我们就试一试postman或者我正在使用的Insomnium

在向端口提交数据时,使用JSON格式,然后Send.

得到了一个错误:

"detail": "The content-type \"application\/json\" is not supported. Supported MIME types are \"application\/ld+json\".",

application/json是不支持的,只支持application/ld+json。

那如果我一定要用json格式或者说我就只喜欢用json格式呢?

修改config/packages/api_platform.yaml

api_platform:
    # ...
    formats:
        jsonld: ['application/ld+json']
        json: ['application/json']    
    # ...

再提交就可以看到返回了201

可是如果你使用PATCH修改我们提交过的数据

/api/dragon_treasures/1

同样会返回

"detail": "The content-type \"application\/json\" is not supported. Supported MIME types are \"application\/merge-patch+json\".",

再次修改该文件即可

api_platform:
    # ...
    formats:
        jsonld: ['application/ld+json']
        # add json
        json: ['application/json']
        csv: ['text/csv']
    patch_formats:
        json:     ['application/merge-patch+json','application/json']
    # ...

接下来我们在浏览器里使用返回集合端口

/api/dragon_treasures.json

/api/dragon_treasures.jsonld

api platform默认使用jsonld格式,如果你只喜欢json,那么只需要指定格式即可。

接下来我们再添加一个新的格式:

api_platform:
    # ...
    formats:
        jsonld: ['application/ld+json']
        json: ['application/json']
        csv: ['text/csv']
    # ...

同样的,在浏览器里打开

/api/dragon_treasures.csv

方便吗?当然,api platform支持的格式还有更多

该框架原生支持 JSON-LD(和 Hydra)、GraphQL、JSON:API、HAL、YAML、CSV、HTML(API 文档)、原始 JSON 和原始 XML。不鼓励使用原始 JSON 或原始 XML 格式,而是更喜欢使用 JSON-LD,它提供更多功能并且易于使用。

About Me

我是一位精通 Symfony 框架和 API Platform 的开发者,擅长构建高效、可扩展的 Web 应用程序和 API。 此外,我还具备 PrestaShop 模块开发经验,能够为您的电商平台定制功能,满足特定业务需求。