我喜欢 MVC(非常喜欢),并且我正在尝试用当今所有主要的 Web 语言自学一个 MVC 架构框架。
我目前在使用 CodeIgniter 和 PHP。我在网上搜索了一种方法来使相同的函数对于 POST 和 GET 表现不同,但找不到任何东西。CodeIgniter 有这个功能吗?
如果您使用过 Ruby On Rails 或 ASP.NET MVC,您就会知道我在说什么,在它们的框架中,我们可以这样做:
[GET]
public ActionResult Edit(int Id)
{
// logic here for GET
}
[POST]
public ActionResult Edit(EntityX EX)
{
// logic here for POST
}
Run Code Online (Sandbox Code Playgroud)
我已经习惯了这一点,以至于我发现很难在没有这种有用能力的情况下如何获得相同的流畅功能。
我错过了什么吗?如何在 CodeIgniter 中实现相同的功能?
谢谢
HTTP动词PURGE是幂等的吗?如果我两次发送相同的PURGE请求,第二次会收到200吗?
我有一个微服务,可在将消息发布到Rabbit队列之前使Varnish缓存无效。在清除失败的情况下,我们需要记录并继续执行。
队列使用者必须从Varnish缓存中获取资源的最新状态。如果第一个微服务的第一次清除成功,是否会成功返回第二个微服务的新清除请求(实际从清漆请求资源之前)?
我试图找到一种方法来创建视图集的自定义权限.我想实现这样的事情:
class ActivityViewSet(viewsets.ModelViewSet):
queryset = Activity.objects.all()
serializer_class = ActivitySerializer
if request.method == 'PUT':
permission_classes = (permissions.IsOwner)
elif request.method == 'LIST':
permission_classes = (permissions.IsAdmin)
else :
permission_classes = (permissions.AllowAny)
Run Code Online (Sandbox Code Playgroud)
IE:按方法排序权限.(上面的代码不起作用,因为"请求"未被识别)
在文档的"自定义权限"部分找不到任何用处,但也许我只是盲目.(重写BasePermission?怎么样?谁?在哪里?)
谢谢 :)
根据void setRequestMethod (String method)这里的文件:
允许的方法仅限于:
我有一个服务器提供对消息列表的访问,我有一个选项是检索下一条消息:
NEXT /api/1/message
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将NEXT方法放在JavaScript HttpURLConnection中时,我收到一个错误:
E/MsgProcessingService:处理消息时失败:java.net.ProtocolException:未知方法'NEXT'; 必须是[OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE]之一
是否存在绕过该方法限制的非黑客方式?
显然,我可以在我的服务器上创建一个新的访问点,但我希望我不必这样做......
GET /api/1/message/next
Run Code Online (Sandbox Code Playgroud) 通过express,我们可以使用不同的中间件来处理get和post请求,例如。
// GET method route
app.get('/users', function (req, res) {
// handle get request
})
// POST method route
app.post('/users', auth, function (req, res) {
// handle post request
})
Run Code Online (Sandbox Code Playgroud)
我如何在下一个js中做同样的事情?
我对 next js 完全陌生。我可能只是错过了一些东西。
我想使用适合以下场景的适当方法来设计我的休息端点。
有一个团体。每个小组都有成员。会员必须经过群管理员批准才能成为会员。如果管理员拒绝,用户将无法成为该组的成员。
我有以下端点来解决这种情况。
当用户加入群组时
POST /projects/api/v1/projects/{project id}/members/{member id}
用于
PUT /groups/api/v1/groups/{group id}/members/{member id}/approve批准会员资格
但是,我无法确定拒绝会员资格的正确端点。我应该使用
PUT /projects/api/v1/projects/{project id}/members/{member id}/reject
Run Code Online (Sandbox Code Playgroud)
或者
DELETE /projects/api/v1/projects/{project id}/members/{member id}
Run Code Online (Sandbox Code Playgroud) 我必须允许从前面删除和更新某些模型对象的请求。我希望删除数据库中的实例和适当的行。
我尝试使用DRF教程(https://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/)中的信息,以及其他一些示例。我知道如果使用ViewSet,我必须允许一些操作和使用行。我在DRF教程中使用装饰器。
有我的view.py
class DualFcaPlanUseViewSet(viewsets.ModelViewSet):
authentication_classes = (CsrfExemptSessionAuthentication,)
def get_queryset(self):
user = self.request.user
return FcaPlanUse.objects.filter(id_fca__num_of_agree__renters_id__user_key = user)
def get_serializer_class(self):
if self.request.method == 'GET':
return FcaPlanUseSerializer
if self.request.method == 'POST':
return FcaPlanUsePOSTSerializer
@action(detail=True, renderer_classes=[renderers.StaticHTMLRenderer])
def highlight(self, request, *args, **kwargs):
fcaplanuse = self.get_object()
return Response(fcaplanuse.highlighted)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
Run Code Online (Sandbox Code Playgroud)
我在应用urls.py中的操作
from django.conf.urls import url
from rest_framework import renderers
from . import views
from cutarea.views import DualFcaPlanUseViewSet
fcaplanuse_list = DualFcaPlanUseViewSet.as_view({
'get': 'list',
'post': 'create'
})
fcaplanuse_detail = DualFcaPlanUseViewSet.as_view({
'get': 'retrieve',
'put': …Run Code Online (Sandbox Code Playgroud) 我在Symfony应用程序中配置了以下路由:
label:
url: /label
param: { module: label, action: configure }
requirements: { sf_method: get }
label_create:
url: /label
param: { module: label, action: create }
requirements: { sf_method: post }
Run Code Online (Sandbox Code Playgroud)
链接executeConfigure和executeCreate行动.然后我有一个这样配置的表单:
<form action="<?php echo url_for('@label_create') ?>" method="POST">
<?php echo $form->renderHiddenFields() ?>
<input type="hidden" name="sf_method" value="post" />
<!-- more stuff here -->
</form>
Run Code Online (Sandbox Code Playgroud)
每当提交表单时executeConfigure,虽然据我所知,使用POST方法配置的路由应该避免并执行executeCreate.
如何区分这两个保持相同URL的操作?
谢谢!
http-method ×8
django ×2
django-views ×2
php ×2
rest ×2
android ×1
api ×1
codeigniter ×1
http ×1
http-delete ×1
http-put ×1
java ×1
middleware ×1
next.js ×1
purge ×1
rabbitmq ×1
routing ×1
symfony1 ×1
varnish ×1