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,它提供更多功能并且易于使用。