我在尝试理解WARP如何与客户端进行交互时遇到了一些麻烦.如果我是通过WARP构建我的服务器端,并且有一个Javascript客户端.我可以假设使用AJAX作为客户端和服务器端之间的桥梁吗?
前言:OSX开发的新手.
cabal安装快照 - 这很好用.
当我键入snap到终端时没有任何反应.如何将我的快照路径导出到OSX中的$ PATH?
同样的事情发生在happstack和yesod ....这些都安装了
我试图让博客示例运行,但是某些处理函数中的类型存在问题,我不知道如何修复它.
我试图运行的例子发布在这里: Yesod博客示例 我改变了一点,我将类型添加到defaultLayout函数并使其成为Yesod的实例以摆脱双重定义.
defLayout :: GWidget a Blog () -> GHandler a Blog RepHtml
defLayout inside = do
mmsg <- getMessage
pc <- widgetToPageContent $ do
toWidget [lucius|
body {
width: 760px;
margin: 1em auto;
font-family: sans-serif;
}
textarea {
width: 400px;
height: 200px;
}
#message {
color: #900;
}
|]
inside
hamletToRepHtml [hamlet|
$doctype 5
<html>
<head>
<title>#{pageTitle pc}
^{pageHead pc}
<body>
$maybe msg <- mmsg
<div #message>#{msg}
^{pageBody pc}
|]
instance Yesod Blog where
approot = ApprootStatic …Run Code Online (Sandbox Code Playgroud) 以下函数是Yesod REST服务器的一部分,通过电子邮件地址在MongoDB数据库中搜索现有用户,并返回Maybe User:
{-# LANGUAGE DeriveGeneric #-}
module Model.User where
import Database.MongoDB (Action, findOne, select, (=:))
import qualified Database.MongoDB as M
import GHC.Generics (Generic)
import Import
data User = User
{ userEmail :: Text
, userFirstName :: Text
, userLastName :: Text
} deriving (Generic, Show)
collection :: Text
collection = "users"
instance FromJSON User
instance ToJSON User
findForEmail :: Text -> Action IO (Maybe User)
findForEmail email = do
maybeDocument <- findOne (select [ "email" =: email …Run Code Online (Sandbox Code Playgroud) 我正在为Yesod中的资源编写REST API.我有一个POST方法应该尝试创建给定的资源,如果成功返回201和新创建的资源的ID.例如,
postResourceR :: Handler String
postResourceR = do
id <- runDB $ insert Resource
sendResponseStatus status201 id -- DOES NOT COMPILE
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误,这很简单:
No instance for (ToTypedContent (Key Resource))
arising from use of 'sendResponseStatus'
Run Code Online (Sandbox Code Playgroud)
我知道我想要的东西ToTypedContent,但我找不到任何方法从KeyDatabase.Persist.Class中获取它.任何帮助将不胜感激.
编辑:
这是实际资源的定义:
Notification
title Text
content Text
icon Text Maybe
action Text Maybe
created UTCTime
updated UTCTime
deriving Show
Run Code Online (Sandbox Code Playgroud) 我从模板初始化 Yesod 项目。我在 Foundation.hs 尝试更改 css 变量时出错
$ stack new s1 yesod-simple
$ cd s1
$ mv static/css/bootstrap.css static/css/style.css
Run Code Online (Sandbox Code Playgroud)
改变基础.hs
pc <- widgetToPageContent $ do
addStylesheet $ StaticR css_bootstrap_css
$(widgetFile "default-layout")
Run Code Online (Sandbox Code Playgroud)
到
pc <- widgetToPageContent $ do
addStylesheet $ StaticR css_style_css
$(widgetFile "default-layout")
$ stack build
...
[4 of 8] Compiling Foundation ( Foundation.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/Foundation.o )
Foundation.hs:64:37: Not in scope: ‘css_style_css’
Run Code Online (Sandbox Code Playgroud)
但据我所知,在编译时 css_style_css 应该会自动出现。我做错了什么?如果我们需要在默认布局中添加几个 css 文件,我该怎么办?
看一看:
myEntity :: Entity Post
myEntity = ...
myValue :: Entity Post -> Post
myValue = <someFunction>
myKey :: Entity Post -> PostId
myKey = <someOtherFunction>
Run Code Online (Sandbox Code Playgroud)
是someFunction和someOtherFunction存在于yesod还是我需要创建它们?
我有一个这样的模块:
module Model where
import FlowType
.
.
.
Run Code Online (Sandbox Code Playgroud)
我正在使用FlowTypeinModel的主体,但我也想与模型的函数 FlowType 一起导出。我找到了一个具有以下语法的模块:
module Import
( module Import
) where
import Foundation as Import
.
.
.
Run Code Online (Sandbox Code Playgroud)
这是什么module Import ( module Import) where???我如何在我的Model模块中做同样的事情(并导出它自己的函数)?
我希望能够生成任意二维码并将它们显示在网页上,该网页将由 Yesod 提供服务。
我真的没有任何代码可以共享,因为我不知道如何链接那里的 QR 代码生成/图表库,然后输出可以在页面上提供的图像。
有没有人有任何指示?
我希望我的应用程序的客户端ID和密码ID不属于我的源代码.因此,如果我在运行时从环境变量中读取这些设置,它们将始终包含在IO中.这会导致问题,因为他们将无法撰写:
authPlugins :: master -> [AuthPlugin master]
authGoogleEmail :: YesodAuth m => Text -> Text -> AuthPlugin m
getEnv :: String -> IO String
Run Code Online (Sandbox Code Playgroud)
提出这个问题的另一种方法是:如何在http://www.yesodweb.com/book/authentication-and-authorization中给出的第一个示例代码中读取clientId和clientSecret从环境中读取
haskell ×10
yesod ×10
monads ×2
composition ×1
haskell-warp ×1
macos ×1
module ×1
qr-code ×1
types ×1