【问题标题】:API, how create Put method?API,如何创建 Put 方法?
【发布时间】:2015-02-19 17:45:26
【问题描述】:

我有 Mongo 和 Document。我想创建 putMethodAction,他检查填写(在文档中 - 名称、预兆、其他)并更新他或创建新文档。这里:

/**
 * Update existing dream from the submitted data or create a new dream at a specific location.
 *
 * @ApiDoc(
 * resource = true,
 * description = "Create/Update single dream",
 * parameters={
 * {"name"="title", "dataType"="string", "required"=true, "description"="Dream name"},
 * {"name"="description", "dataType"="string", "required"=true, "description"="Description about dream"},
 * {"name"="phone", "dataType"="integer", "required"=true, "description"="Phone number", "format"="(xxx) xxx xxx xxx"}
 * },
 * statusCodes = {
 * 201 = "Returned when the Page is created",
 * 204 = "Returned when successful",
 * }
 * )
 *
 *
 * @param  Request $request the request object
 * @param  int     $id      the page id
 * @return mixed
 */
public function putDreamAction(Request $request, $id)
{
    $data = $request->request->all();
    $user = $this->getUser();
    $data = $this->get('serializer')->serialize($data, 'json');
    $dream = $this->get('serializer')->deserialize($data, 'AppBundle\Document\Dream', 'json');

        if (!($dm = $this->get('doctrine.odm.mongodb.document_manager')->getRepository('AppBundle:Dream')->findById($id)))

        {
            $dm = $this->get('doctrine.odm.mongodb.document_manager');
            $dm->persist($dream);
            $dm->flush();
            $restView = View::create();
            $restView->setStatusCode(Codes::HTTP_CREATED);

        } else {
            $restView = View::create();
            $restView->setStatusCode(Codes::HTTP_NO_CONTENT);
        }

        return $restView;

}

否则——还有什么? 怎么做?

【问题讨论】:

    标签: mongodb api rest symfony put


    【解决方案1】:

    您可以参考Routing documentation 来精确配置您的控制器。

    blog_show:
        path:     /blog/{slug}
        defaults: { _controller: AppBundle:Blog:show }
        methods:  [GET]
    
    blog_update:
        path:     /blog/{slug}
        defaults: { _controller: AppBundle:Blog:update }
        methods:  [PUT]
    
    blog_delete:
        path:     /blog/{slug}
        defaults: { _controller: AppBundle:Blog:delete }
        methods:  [DELETE]
    

    同样的事情也可以通过注解来完成。您还可以传递魔术_method 查询参数,该参数应该覆盖 HTTP 方法(参见相同的文档)

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2023-03-28
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多