我会尽力解释.
我使用Play Framework 2,我会做很多CRUD操作.他们中有些人会identitcal,所以我想吻和DRY所以起初我在想包含一个抽象类list
,details
,create
,update
和delete
方法,与通用对象,并通过指定要使用哪个对象扩展这个类(型号和表格):
public abstract class CrudController extends Controller {
protected static Model.Finder<Long, Model> finder = null;
protected static Form<Model> form = null;
public static Result list() {
// some code here
}
public static Result details(Long id) {
// some code here
}
public static Result create() {
// some code here
}
public static Result update(Long id) {
// some code here
}
public static Result delete(Long …
Run Code Online (Sandbox Code Playgroud) 我知道这个问题太宽泛了,无法用简单的"使用这个框架"来回答,但我真的很感激你对这个问题的建议.
我希望制作一个(相当复杂的)项目,而不是运行API.我对任何编程语言(主要是PHP,Python,Java)持开放态度,并发现许多框架更倾向于构建RESTful Web服务器.
我唯一的主要限制是,我将拥有一个可重用,简单且无代码意义独立的软件包,以便以后轻松改进我的API,甚至可以毫不费力地切换到其他框架.
对于Python和Java,我考虑过制作一个专用包.每个动作都会调用包中的专用方法,包将返回object/dict,动作会将其转换为正确的格式.
经过多次研究,我对两个可能对我的工作有益的框架犹豫不决,但我需要你的建议,因为我不会在这里犯任何错误.
为了在生产中使用它们,使用apache&mod_proxy或nginx很容易实现.
所以,我的问题很简单:你会选择什么(在这两者或其他人之间,我不接受建议)以及为什么?
非常感谢您的建议!
使用Hibernate,我想根据条件更新数据库中的数据,但是我收到以下错误:"遍历的节点不能为null"
这是我的数据库描述:
Account: id, email, password
Member : id, account, team
Team: id, current (and a reference to member => members)
Run Code Online (Sandbox Code Playgroud)
这是我的JPA:
UPDATE Team t SET t.current = :current LEFT JOIN t.members m WHERE t.current = :current_true AND m.account = :account
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如果我将LEFT JOIN移动到SET之前:
UPDATE Team t LEFT JOIN t.members m SET t.current = :current WHERE t.current = :current_true AND m.account = :account
Run Code Online (Sandbox Code Playgroud)
我得到了:"期待SET,发现LEFT"
如果我删除了联接:
UPDATE Team t SET t.current = :current WHERE t.current = :current_true AND t.members.account = :account
Run Code Online (Sandbox Code Playgroud)
我得到了:"非法尝试取消引用收集". …
我必须说我对如何使用新的Play Framework 2处理请求参数感到有些困惑.数据来自关于请求如何进行的不同来源.到目前为止,这里有可能性:
1 - 如果你做一个简单的GET:
ctx().request().queryString()
Run Code Online (Sandbox Code Playgroud)
2 - 如果使用HTML表单执行POST:
表格 :
<form method="post" action="/">
<input type="hidden" name="foo" value="bar" />
<input type="hidden" name="t" value="1" />
<input type="hidden" name="bool" value="true" />
<input type="submit" name="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
方法 :
public static Result test() {
ctx().request().queryString(); // {} ; As expected
ctx().request().body(); // contains data
ctx().request().body().asFormUrlEncoded(); // contains data
ctx().request().body().asJson(); // empty
return ok();
}
Run Code Online (Sandbox Code Playgroud)
这似乎很正常.
现在,如果我添加@BodyParser.Of(BodyParser.Json.class)
(假设我在非JS案例中接受Ajax POST和普通POST for fallback):
@BodyParser.Of(BodyParser.Json.class)
public static Result test() {
ctx().request().queryString(); // {} ; …
Run Code Online (Sandbox Code Playgroud) 我正在构建一个API,我想限制对它的请求.
我想限制每个用户每个时间(小时,天)的请求数,每个时间(所有用户)的请求总数(小时,天)等.
我四处搜索,发现Play 2.1是否有模块,但没有任何结果.我在这里尝试过,如果有人已经遇到这个问题,我发现它只能用于Play 1.2.
我是来自Django的CherryPy的新手.我喜欢Django将项目的各个部分分成许多文件的方式,我想在CherryPy中做同样的事情,而不是有一个大文件.
我认为如果我能在这些部分拆分项目会很棒:
我不是要求在这里完整的代码粘贴,一个示例/ pastebin/gist的链接也是完美的:)
谢谢你的帮助.
测试Web应用程序,我可以上传GIF/Jpeg文件,我知道在GIF/Jpeg中正确包含PHP代码时可能存在威胁(因为它是使用imagecreatetruecolor和imagejpeg修改的).
我正在寻找一个包含简单PHP代码(如phpinfo或echo'hello world')的现有GIF文件,只是为了验证威胁是否具体.
什么是完美的是一个专门制作的GIF图像包含中间或调色板颜色的PHP代码,但我没有成功找到一个.
谢谢你的帮助!
我使用来自http://www.objectify.be/wordpress/?p=363的解释良好的文章构建了一个Play!Framework 2模块,但是如果我更改PlayFramework版本(例如通过更新),模块将失败.
有没有办法使模块"版本独立"?
我正在使用Playframework制作一个简单的身份验证系统,内置CSRF过滤器和Security.Authenticator系统,但我遇到了一个问题:
当用户填写他的登录名/密码并提交回车时,我有以下错误:
在会话中找不到CSRF令牌
我检查了我的表单,CSRF令牌确实存在且正确放置(在标签内)
这是我的routes
:
GET /login controllers.Authentication.login
POST /login controllers.Authentication.authenticate
Run Code Online (Sandbox Code Playgroud)
而我的Authentication.java
班级:
@play.filters.csrf.AddCSRFToken
public static Result login() {
if (Session.getAccount() != null) {
return redirect(controllers.routes.Instances.list());
}
LoginForm loginForm = new LoginForm();
if (ctx().session().containsKey("email")) {
loginForm.setEmail(ctx().session().get("email"));
}
if (request().queryString().containsKey("disconnected")) {
flash("warning", Messages.get("secure.logout")); // TODO : Warning flash message
}
Form<LoginForm> form = Form.form(LoginForm.class).fill(loginForm);
return ok(views.html.login.render(form));
}
@play.filters.csrf.AddCSRFToken
@play.filters.csrf.RequireCSRFCheck
public static Result authenticate() {
Form<LoginForm> form = Form.form(LoginForm.class).bindFromRequest();
if (form.hasErrors()) {
return badRequest(views.html.login.render(form));
}
LoginForm login = form.get(); …
Run Code Online (Sandbox Code Playgroud) 使用Play-Framework 2.1(rc4)和"内置"RequireJS,一切运行良好,Play成功压缩(uglify)我在PROD中的所有JS文件,但我希望它在一个JS文件中加入所有这些文件.
这可能吗?如果是,怎么办?是否有使用这些指令生成的build.js?
谢谢你的帮助 :)