Silverstripe Restfulapi 配置

Silverstripe Restfulapi configuration

我尝试使用 silverstripe 4 的 Restfulapi 插件,我的配置是:

integre\About:
  api_access: true
integre\Home:
  api_access: true
Image:
  api_access: true
File:
  api_access: true
integre\Theatre:
  api_access: true
# RestfulAPI config
Colymba\RESTfulAPI\RESTfulAPI:
  authentication_policy: false
  access_control_policy: 'ACL_CHECK_CONFIG_AND_MODEL'
  cors:
    Enabled: true
    Allow-Origin: '*'
    Allow-Headers: '*'
    Allow-Methods: 'OPTIONS, POST, GET, PUT, DELETE'
    Max-Age: 86400

但是当我尝试 http://localhost/integre/api/Theatre/1 我收到 { "code": 400, "message": "Model does not exist. Received 'Theatre'." }

如何解决这个问题?

您的问题是您使用的是带命名空间的 class,但未正确配置它以在 API 中使用,因此无法正确解析。看着 DefaultQueryHandler, you need to define a class name map for this:

Colymba\RESTfulAPI\QueryHandlers\DefaultQueryHandler:
  models:
    Theatre: integre\Theatre

这告诉查询处理程序在请求 Theatre 模型时加载 integre\Theatre。请注意,您的配置中的图像和文件引用也缺少它们的命名空间。