我正在使用Play 2.2.1.我的路由文件中有以下路由配置:
OPTIONS /*path controllers.Application.options
GET / controllers.Application.index
...some more routes
Run Code Online (Sandbox Code Playgroud)
我在Applications控制器中进行了以下设置:
package controllers
import play.api.mvc._
object Application extends Controller {
def index = Action {
Ok(views.html.index())
}
def options = Action {
Ok("").withHeaders(
"Access-Control-Allow-Origin" -> "*",
"Access-Control-Allow-Methods" -> "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers" -> "Accept, Origin, Content-type, X-Json, X-Prototype-Version, X-Requested-With",
"Access-Control-Allow-Credentials" -> "true",
"Access-Control-Max-Age" -> (60 * 60 * 24).toString
)
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用curl测试OPTIONS请求时,它会被播放完全忽略.
curl -X OPTIONS --include 'http://localhost:9000/foo/139'
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8
Content-Length: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将单个列表转换为多维Array2D.从基本上去[1; 2; 3]到[[1; 2; 3]].我不能只使用,List.toArray因为我正在使用一个API函数,它接受一个int[,]输入.
最好的方法是什么?
我一直在寻找一个关于如何连接到MySql数据库并使用F#类型提供程序的示例,但我在网上找不到任何东西.
任何人都可以给我一个线索吗?什么 - 如果有的话 - 我需要额外的包裹?我是否使用SqlDataConnection或SqlEntityConnection.
请原谅我的无知,但我完全迷失了.任何和所有的帮助表示赞赏.我喜欢类型提供者的想法,并且在功能编程方面有相当多的经验,但是围绕这个的设置让我感到满意.
我刚刚开始使用F#和.Net但是经过一些谷歌搜索我没有找到这个例子.如果这太简单,我会提前道歉.
我正在尝试查询数据库并异步执行.例如,我有一个像这样的函数:
let queryExample name =
query {for f in foo do
where (f.name = name)
select f.name}
|> Seq.toList
Run Code Online (Sandbox Code Playgroud)
现在,我将如何制作异步版本?query不返回Async<'a>类型.
我正在使用Play 2.2.1,我正在尝试编写自己的Action来处理CORS请求.我发现了 这个,但不幸的是它没有编译.
仅供参考,这是(稍加修改)的代码:
import play.api.mvc._
import scala.concurrent.ExecutionContext
case class CorsAction(action: EssentialAction) extends EssentialAction {
def apply(request: RequestHeader) = {
implicit val executionContext: ExecutionContext = play.api.libs.concurrent.Execution.defaultContext
val origin = request.headers.get("Origin").getOrElse("*")
if (request.method == "OPTIONS") {
val cors = Action { request =>
Ok("").withHeaders(
"Access-Control-Allow-Origin" -> origin,
"Access-Control-Allow-Methods" -> "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers" -> "Accept, Origin, Content-type, Authorization, X-Auth-Token, " +
"X-HTTP-Method-Override, X-Json, X-Prototype-Version, X-Requested-With",
"Access-Control-Allow-Credentials" -> "true",
"Access-Control-Max-Age" -> (60 * 60 * 24 * 30).toString)
} …Run Code Online (Sandbox Code Playgroud)