直接贴代码,一切尽在不言中

%% cowboy的restful的文档,一定要好好阅读http://ninenines.eu/docs/en/cowboy/HEAD/manual/cowboy_rest/
%% 几大post提交方式https://imququ.com/post/four-ways-to-post-data-in-http.html
%% curl测试命令curl -l -H "Content-type:application/json" -X POST http://127.0.0.1:8080 -d "aaa=bbb"
-module(restful_handler). -export([init/]).
-export([allowed_methods/]).
-export([content_types_provided/]).
-export([content_types_accepted/]).
-export([delete_completed/]).
-export([delete_resource/]). -export([hello_to_html/]).
-export([form_urlencoded_post/]).
-export([form_data_post/]).
-export([json_post/]). init(Req, Opts) ->
{cowboy_rest, Req, Opts}. allowed_methods(Req, State) ->
Methods = [
<<"HEAD">>,
<<"GET">>,
<<"POST">>,
<<"PATCH">>,
<<"DELETE">>,
<<"OPTIONS">>
],
{Methods, Req, State}. content_types_provided(Req, State) ->
Handlers = [
{<<"text/html">>, hello_to_html}, {<<"application/x-www-form-urlencoded">>, form_urlencoded_post},
{<<"multipart/form-data">>, form_data_post},
{<<"application/json">>, json_post}
],
{Handlers, Req, State}. content_types_accepted(Req, State) ->
Handlers = [
{<<"application/x-www-form-urlencoded">>, form_urlencoded_post},
{<<"multipart/form-data">>, form_data_post},
{<<"application/json">>, json_post}
],
{Handlers, Req, State}. delete_completed(Req, State) ->
io:format("will delete resource~n"),
{true, Req, State}. delete_resource(Req, State) ->
io:format("delete resource finish~n"),
{true, Req, State}. hello_to_html(Req, State) ->
Body = <<"html">>,
{Body, Req, State}. form_urlencoded_post(Req, State) ->
{ok, PostVals, _Req2} = cowboy_req:body_qs(Req),
PostVal1 = proplists:get_value(<<"aaa">>, PostVals),
PostVal2 = proplists:get_value(<<"bbb">>, PostVals),
io:format("form_urlencoded_post~p~p~n",[PostVal1,PostVal2]), Body = string:concat(
erlang:bitstring_to_list(PostVal1),
erlang:bitstring_to_list(PostVal2)
),
NewReq = cowboy_req:set_resp_body(erlang:list_to_bitstring(Body),Req),
{true, NewReq, State}. form_data_post(Req, State) ->
{ok, PostVals, _Req2} = cowboy_req:body_qs(Req),
PostVal = proplists:get_value(<<"aaa">>, PostVals),
io:format("form_data_post~p~n",[PostVal]),
NewReq = cowboy_req:set_resp_body(PostVal,Req),
{true, NewReq, State}. json_post(Req, State) ->
{ok, PostVals, _Req2} = cowboy_req:body_qs(Req),
PostVal = proplists:get_value(<<"aaa">>, PostVals),
io:format("json_post~p~n",[PostVal]),
NewReq = cowboy_req:set_resp_body(PostVal,Req),
{true, NewReq, State}.

cowboy使用restful的例子的更多相关文章

  1. Spring Boot Hello World (restful接口)例子

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  2. cowboy动态页面的例子

    cowboy的动态页用的是erlydtl,需要先安装erlydtl模板引擎,或者你在dep里面添加 创建工程 rebar-creator create-app testCowboy testCowbo ...

  3. cowboy页面重定向的例子

    创建工程 rebar-creator create-app testCowboy testCowboy_app.erl -module(testCowboy_app). -behaviour(appl ...

  4. JAX-RS 方式的 RESTful Web Service 开发

    JAX-RS 方式的 RESTful Web Service 开发 ——基于 CXF+Spring 的实现 Web Service 目前在风格上有两大类,一个是基于 SOAP 协议,一个是完全遵循 H ...

  5. springMVC学习(11)-json数据交互和RESTful支持

    一.json数据交互: json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. springMVC进行json交 ...

  6. 11_springmvc之RESTful支持

    一.理解RESTful RESTful架构,就是一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. RESTful(即Representational Sta ...

  7. 利用WCF搭建RESTful--纯代码启动

    最近学习了这几年忽略了的当前几乎所有的开发技术,有深有浅,而服务层最有兴趣的是RESTfull,看的是java的书.因为不熟悉JSP,于是找了本书细细研读了一次. dotnet的实现也相对简单,网上也 ...

  8. 详解REST架构风格

    编辑推荐: 本文来自于segmentfault.com,一起了解REST的内在,认识REST的优势,而不再将它当作是“理所当然” 引言 作为Web开发者,你可能或多或少了解一些REST的知识,甚至已经 ...

  9. spring boot集成mybatis(1)

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

随机推荐

  1. editplus查找替换的正则表达式应用

    表达式        说明\t        制表符.\n        新行..        匹配任意字符.|        匹配表达式左边和右边的字符. 例如, "ab|bc" ...

  2. HDU 4599 概率DP

    先推出F(n)的公式: 设dp[i]为已经投出连续i个相同的点数平均还要都多少次才能到达目标状态. 则有递推式dp[i] = 1/6*(1+dp[i+1]) + 5/6*(1+dp[1]).考虑当前这 ...

  3. Android SDK Manager Google Apis 下载

    本意是想利用google的gcm来实装android推送功能的,很遗憾, google貌似已经停止提供啥服务给国内了,或者说国内想继续使用google 服务暂时变得几乎不可能了.找了个代理来进行goo ...

  4. input子系统详解

    一.初识linux输入子系统 linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler).输入子系统核心层(Inpu ...

  5. IAR MSP430如何生成烧写文件

    IAR生成430烧写方法有2种, 第一种是:将工程的debug模式切换成release模式,看图片操作.    那个.d43文件就是仿真调试模式的文件. 这里的test.txt文件就是烧写文件了,不要 ...

  6. Latex 编译错误: ! pdfTeX error (ext4): \pdfendlink ended up in different nesting level than \pd fstartlink. 解决方法

    最近写 AAAI 的文章,下载了其模板,但是蛋疼的是,总是提示错误,加上参考文献总是出错: 如下: ! pdfTeX error (ext4): \pdfendlink ended up in dif ...

  7. matlab 工具之各种降维方法工具包,下载及使用教程,有PCA, LDA, 等等。。。

    最近跑深度学习,提出的feature是4096维的,放到我们的程序里,跑得很慢,很慢.... 于是,一怒之下,就给他降维处理了,但是matlab 自带的什么pca( ), princomp( )函数, ...

  8. easyui datagrid使用(好)

    加载相关js和css,因为easyui依赖jquery,所有加载easyui前要先加载jquery,否则为提示找不到datagrid <!-- 加载jquery --> <scrip ...

  9. JavaScript对SVG进行操作的相关技术

    原文地址:http://www.ibm.com/developerworks/cn/xml/x-svgscript/   本文主要介绍在 SVG 中通过编程实现动态操作 SVG 图像的知识. SVG ...

  10. 【转】Android中JNI的使用方法

    Android中JNI的使用方法 首先看一下Android平台的框架图:(网上盗用) 可以看到Android上层的Application和ApplicationFramework都是使用Java编写, ...