有人可以比较.NET与Java EE的中间件差异(优点/缺点).
如果没有,至少提供一个有用的链接供我阅读,简洁明了.
如何使用 Java 语言将 SOAP 转换为 REST?
package net.weather;
import java.sql.*;
import javax.jws.WebService;
@WebService
public class ProjectFinalWS{
Connection con;
Statement st;
ResultSet rs;
String res;
public void connectDB()
{
String url ="jdbc:mysql://localhost:3306/";
String dbName ="project";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "root";
try
{
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url+dbName,userName,password);
}catch(Exception e){}
}
public float getMaxTemp(String city)
{ float mxtemp=0;
connectDB();
try{
st=con.createStatement();
rs=st.executeQuery("select maxtemp from weather where city='"+city+"'");
rs.next();
mxtemp=rs.getFloat(1);
st.close();
con.close();
}
catch(Exception e){}
return mxtemp; …Run Code Online (Sandbox Code Playgroud) 我想清楚地了解什么是最pythonic和更清洁的实现方式:
我是否应该编写一个WSGI中间件来获取应用程序作为参数或纯金字塔补间中的一个或两个我的要求?
另外,哪个wsgi中间件或补间最符合apache + mod_wsgi?
谢谢
Ring非常流畅,并且对于中间件有一些非常合理的默认值.
当我通过leiningen(lein)创建一个新应用程序时,我在路由器/处理程序中得到了类似的东西
(def app
(wrap-defaults app-routes site-defaults))
Run Code Online (Sandbox Code Playgroud)
https://github.com/ring-clojure/ring-defaults
现在我想添加更多中间件(cemerick/friend),这样我就可以进行登录认证等操作.
那么,我如何将上述内容翻译成更像环形中间件"堆栈"的内容,如页面底部https://github.com/ring-clojure/ring-defaults/blob/master/src/ring /middleware/defaults.clj
(def app
(-> handler
(wrap-anti-forgery)
(wrap-flash)
(wrap-session)
(wrap-keyword-params)
(wrap-resource)
(wrap wrap-file)))
Run Code Online (Sandbox Code Playgroud) 所有:
我是Express 4路由器的新手.
当我尝试一些登录/注册示例时,我得到一个关于.use和.get/.post函数的问题:
我有时看到它使用:
var express = require('express');
var router = express.Router();
router.get('/hello', function(req, res, next) {
res.send("Welcome");
});
Run Code Online (Sandbox Code Playgroud)
在主应用程序中,我们使用它像:
app.use("/", router);
Run Code Online (Sandbox Code Playgroud)
在其他时间,它使用:
var express = require('express');
var router = express.Router();
//here the router uses .use() function rather than .get/.post
router.use('/hello', function(req, res, next) {
res.send("Welcome");
});
Run Code Online (Sandbox Code Playgroud)
在主应用程序中,我们使用它像:
app.use("/", router);
Run Code Online (Sandbox Code Playgroud)
所以我想知道它们之间有什么区别,.use()只是所有get/post/put/...的通用名称吗?
我发现这篇文章:app.use和express.js中的app.get之间的区别
但仍然不觉得这很容易理解....
谢谢
全部:
我对 Express.js 很陌生,当我尝试 .param() 时,一件有趣的事情是:
在 app.js (主服务器文件)中,我有类似的东西:
app.param("id", function(req, res, next, id){
console.log(id+" in app level");
next();
})
app.use("/", routes);
Run Code Online (Sandbox Code Playgroud)
该应用程序是 Express Application 对象,在路由路由器模块中:
router.param("id", function(req, res, next, id){
console.log(id + " in router level");
next();
})
router.get('/:id', function(req, res, next) {
res.send('respond with a resource');
});
Run Code Online (Sandbox Code Playgroud)
但是当我请求 /testUserId 时,只有路由器模块内的 param() 运行,我以为 app.param() 会先运行,然后是 router.param(),但实际上不是,谁能帮忙解释一下原因(我必须错过来自 Express 的 API 文档的某些部分)以及如何使两者都运行?
谢谢
中间件:
use Closure;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier {
public function handle($request, Closure $next)
{
return parent::handle($request, $next);
}
}
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': 'wrong-token-to-test',
'X-XSRF-TOKEN': 'another-wrong-token-to-test',
}
});
Run Code Online (Sandbox Code Playgroud)
刀:
$.ajax({
method: "POST",
url: "{{url("login/$user")}}",
data: {
"email": $("#email").val(),
"password": CryptoJS.SHA256($('#password').val()).toString(),
"_token": "{{csrf_token()}}"
}
})
Run Code Online (Sandbox Code Playgroud)
即使对csrf令牌使用错误的Http头值('wrong-token-to-test')也不会导致任何令牌不匹配异常.请求正常处理.这是否意味着Laravel没有检查X-CSRF-TOKEN标头?
我真的很想知道这些东西是如何工作的,特别是在技术方面.目前,我正在更深入地研究ruby并尝试仅将其用于机架,以便了解基于机架的框架如何工作.
此时,机架中间件让我发疯.为什么?虽然中间件非常简单,但我对它有点困惑@app.call(env).为清楚起见,请考虑以下代码:
class MyCustomMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env) if env['REQUEST_METHOD'] != 'POST'
body = env['rack.input'].clone
body = JSON.parse(body.gets || {}, symbolize_names: true)
body[:some_message] = "Peace, Love and Hope"
env.update('rack.input', StringIO.new(JSON.dump(body)))
@app.call(env)
env
end
Run Code Online (Sandbox Code Playgroud)
我想做的就是更改请求体,如果(并且仅当)请求方法是POST.如果请求方法是除"POST"之外的任何其他类型,我想将请求传递给下一个中间件(它在Rack中以这种方式工作,对吧?).问题是,无论请求方法是否存在,所有代码都在执行POST.
也许这可能是对机架中间件的误解,因为我习惯了Express.js.在Express,您有一堆请求通过的中间件,并且每个中间件调用该next()方法以"释放"请求.我认为这@app.call(env)将类似于Express' next()方法...但看起来不是,因为当我调用它并且所有代码都被执行时请求没有被释放.
有人可以解释一下这个方法到底做了什么,并指出我的错误在哪里?
我使用 go-chi 作为 HTTP 路由器,我想在另一种方法中重用一种方法
func Registration(w http.ResponseWriter, r *http.Request) {
b, err := ioutil.ReadAll(r.Body) // if you delete this line, the user will be created
// ...other code
// if all good then create new user
user.Create(w, r)
}
...
func Create(w http.ResponseWriter, r *http.Request) {
b, err := ioutil.ReadAll(r.Body)
// ...other code
// ... there I get the problem with parse JSON from &b
}
Run Code Online (Sandbox Code Playgroud)
user.Create 返回错误 "unexpected end of JSON input"
其实,在我执行的ioutil.ReadAll
user.Create停止解析JSON,
在r.Body …