Slim Framework可选参数路由

我是php新手,我正在使用Slim Framework开发一个简单的Rest Api。</ p>

根据文档,Slim使用 FastRoute 。</ p >

我有一条带有可选参数(供应商和数量)的路线:</ p>

  path / items / {id} / {name} / { 价格} [/ {供应商} [/ {数量}]] 
</ code> </ pre>

问题是如果我将供应商</ strong>留空了 数量</ strong>会转到供应商,数量不会被填充。 我明白,通过快速路线,我无法做到这一点。 但是,我该怎么办呢? </ p>


  1. 我可以使用快速路线吗?</ li>
  2. 我可以用Slim做到吗? </ li>
  3. 是否有其他框架可以实现我想要的目标? </ li>
  4. 我应该只使用查询字符串吗? (我认为这就是答案,但我需要有更多知识的人的帮助。)</ li>
    </ ol>

    谢谢。</ p>
    </ div>

展开原文

原文

I'm new to php and I'm using Slim Framework to develop a simple Rest Api.

According to docs, Slim uses FastRoute.

I have a route with optional params (vendor and quantity) like that:

path/items/{id}/{name}/{price}[/{vendor}[/{quantity}]]

The problem is that if I leave vendor blank the value of quantity goes to vendor and quantity will not be filled. I understand that with fast routes I can't achieve that. But, how can I do it?

  1. Can I do it with fast routes?
  2. Can I do it with Slim?
  3. Is there another framework that I can achieve what I want?
  4. Should I use only query strings? (I think that is the answer, but I need a help from someone with more knowledge).

Thank you.

dpdx51205
dpdx51205 添加了我以前的评论作为答案。
大约 4 年之前 回复
duanpie2414
duanpie2414 是的,我只是想着这个。我可能会尝试查询字符串,我认为它更好。谢谢您的帮助。如果您可以添加答案,我会检查它。再次感谢。
大约 4 年之前 回复
dongmu1989
dongmu1989 我的意思是,想想我是否会添加一个带有可选参数的新项目。我该怎么做?
大约 4 年之前 回复
dongtao1262
dongtao1262 所以,我不能这样做,因为它是一个ID。我怎样才能通过这些参数?你能给我一个例子/链接吗?谢谢
大约 4 年之前 回复
dragon4587
dragon4587 我猜数量值总是数字?那些供应商不是吗?或者供应商是否为ID?如果两者都可以包含相同的数据类型(字符串或整数),那么就不能按照您尝试的方式完成它。路由器无法知道某个值(例如,10)是供应商ID还是数量。为什么不总是发送供应商?或者更确切地说,为什么您需要URL中的所有信息?你不能从第一个ID得到它吗?
大约 4 年之前 回复

1个回答



如果您要使用可选参数,这些参数类型相同且可以按任何顺序发送,您可以使用查询 字符串,或具有固定格式,您可以在其中添加类似于0的内容而不是省略它。 未设置“vendor”的示例:</ p>

  / 10 / somename / 15/0/12 
</ code> </ pre>

然后参数在URL /路由中不是可选的,但您可以在控制器中处理它,如果参数为零则忽略它们。</ p>
</ div>

展开原文

原文

If you are going to have optional parameters, which are of the same types and can be sent in any order, you could either use query strings, or have a fixed format where you add something like 0 instead of omitting it. Example where "vendor" isn't set:

/10/somename/15/0/12

Then the parameters aren't optional in the URL/route but you can handle that in your controller instead, just ignoring them if the param is a zero.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐