`
sillycat
  • 浏览: 2552113 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Grails(14)Study the Project

 
阅读更多
Grails(14)Study the Project

1. Reverse the ER from database
Use mysql workbench ----> Database ----> Reverse engineering



Follow the wizard and connect to my local database.



Select the Schemata to be Processed.



I got a nice ER diagram, but it seems not useful.



2. Understand the Configuration
In the controller, it calls

def config = ConfigurationHolder.config

String url = config.sillycat.resturl.base + "dashboard/visitsPerLocation"



In the Config.groovy file, it will be configured like this:

grails.config.locations = [ "file:/opt/conf/SillycatConfig.groovy" ]



From my understanding, we can put list here, and we also can place our configuration in Config.groovy.



3. Implement the JSON REST API


Basic authorization
String authorizationString = "Basic " + 'username:password'.bytes.encodeBase64().toString()
connection.setRequestProperty("authorization",authorizationString)

                   

OAUTH2


Token Implementation


Shiro


I will forget about the authority and try to implement the functions first and then take care about the authority.



Here are my mapping files

// Calls to the Web Services
"/location/$id?" {
     format = "json"
     controller = "store"
     action = [POST:"create", GET:"apiGet"]
}



It will go to find a controller named StoreController the method apiGet with the GET method from HTTP.


The controller implementation will be like this:
def apiGet = {
     def storeInstance = params.id ? Store.get(params.id) : null
     if (!storeInstance) {
          Map map = [errorCode:101, errorMessage: "Can not find the location with id =" + params.id ]
          render map as JSON
     } else {
          render storeInstance as JSON
     }
}



And the unit test class will be looking like this:

class StoreControllerTests extends ControllerUnitTestCase {

    
@Test
public void testGetSuccess() {
     List<Store> stores = [
          new Store(storeCode:"TS1",storeName:"Test Store 1",enabled:true),
          new Store(storeCode:"TS2",storeName:"Test Store 2",enabled:true),
          new Store(storeCode:"TS3",storeName:"Test Store 3",enabled:false)]
          mockDomain(Store, stores)


          def controller = new StoreController()
          controller.params.id = 1
          controller.apiGet()


          assertEquals(controller.response.status, 200)
          //System.out.println(controller.response.status)
          //System.out.println(controller.response.contentAsString)
     }
}


And once the server is on, we can test like this:
@Test
public void testGetSuccessswithServer(){
     def client = new RESTClient("http://localhost:8080")
     def response
     response = client.get(path: "person/1")

     System.out.println(response.status)

     System.out.println(response.data)

}



References:
http://www.intelligrape.com/blog/2011/11/16/writing-json-apis-part-i-creating-a-secure-rest-json-api-with-grails-and-spring-security-in-3-easy-steps/

https://github.com/svivekkrishna/Json-API-Sample

http://grails.org/doc/latest/ref/Controllers/allowedMethods.html



http://www.intelligrape.com/blog/2011/12/29/writing-json-apis-part-ii-creating-json-named-configs-to-control-what-you-render/



https://github.com/padcom/grails-json-rest-api-examples



http://www.intelligrape.com/blog/2010/04/28/working-with-rest-call/



http://www.ibm.com/developerworks/cn/opensource/os-cn-shiro/index.html



https://github.com/springside/springside4/wiki/Reference



http://oauth.net/



https://github.com/SpringSource/spring-security-oauth/wiki/oAuth2



https://github.com/adaptivecomputing/grails-spring-security-oauth2-provider



http://grails.org/plugin/spring-security-oauth2-provider



http://grails.org/doc/latest/guide/theWebLayer.html#moreOnJSONBuilder



http://www.ibm.com/developerworks/java/library/j-grails10209/index.html



http://jwicz.wordpress.com/2011/07/11/grails-custom-xml-marshaller/
分享到:
评论

相关推荐

    Grails Cometed. The best web push

    **Grails CometD:最佳Web推送技术** 在现代Web开发中,实时通信是不可或缺的一部分,它使得用户可以即时获取服务器端的数据更新,无需频繁刷新页面。Grails CometD框架就是为了实现这种实时交互而设计的。本文将...

    The definitive guide to grails 2 英文版 书 代码

    《The Definitive Guide to Grails 2》是Grails框架深入学习的重要参考资料,由业界专家撰写,旨在为开发者提供全面、详尽的Grails 2技术指导。这本书结合了理论与实践,不仅介绍了Grails的基本概念,还涵盖了高级...

    the definitive guide to grails 2

    《Grails 2 的终极指南》是一本深入探讨Grails框架精髓的专业书籍,该书以英文撰写,旨在为读者提供全面、深入的Grails框架学习资料。Grails框架基于Groovy语言,是一种高度动态、敏捷的Java应用开发框架,它简化了...

    Grails Grails Grails

    **Grails 框架详解** Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式...

    grails-docs-1.0.3

    grails参考文档 The Grails Framework - Reference Documentation Authors: Graeme Rocher, Marc Palmer Version: 1.0.3

    eclipse开发grails插件

    4. **创建Grails项目**:现在,你可以通过Eclipse的"New" -&gt; "Grails Project"来创建一个新的Grails项目。选择合适的Grails版本和其他配置,然后Eclipse会自动生成项目结构。 5. **开发与调试**:在Eclipse中,你...

    Grails权威指南 Grails权威指南

    《Grails权威指南》是一本全面深入探讨Grails框架的专著,旨在帮助读者掌握这一强大的Web开发工具。Grails是一种基于Groovy语言的开源框架,它为构建现代、高效的应用程序提供了简洁高效的解决方案。本指南针对不同...

    Eclipse下搭建Grails项目

    【Grails项目搭建详解】 Grails是一个基于Groovy语言的开源Web应用框架,它简化了开发过程,尤其适合快速构建动态网站。在Eclipse中搭建Grails项目可能相对复杂,但通过以下步骤,即使是初学者也能顺利进行。 1. *...

    grails-用户手册

    《Grails用户手册》 Grails,作为一个基于Groovy语言的开源Web应用框架,深受开发者喜爱,它简化了Java开发的复杂性,提供了强大的MVC(Model-View-Controller)架构,以及丰富的插件系统。这份用户手册将帮助你...

    eclipse插件grails(groovy)

    选择"File" &gt; "New" &gt; "Other",在弹出的对话框中展开"Grails",然后选择"Grails Project"。输入项目名,选择Grails版本,然后点击"Finish"。Eclipse会自动为你的项目生成基本的Grails结构,包括`grails-app`目录,...

    grails学习

    Grails 1.1 变更了插件存储路径,默认不再保存在 `PROJECT_HOME/plugins` 目录下。如果你遇到因插件导致的编辑错误,可以在 `grails-app/conf/BuildConfig.groovy` 文件中添加以下配置: ``` grails.project....

    grails快速开发web

    ### Grails 快速开发 Web 应用程序 #### 一、Grails 概述 Grails 是一种基于 Groovy 的开源应用框架,用于简化 Web 应用程序的开发过程。它采用约定优于配置的原则,这使得开发者可以更快地创建功能丰富的 Web ...

    Grails 中文参考手册

    《Grails 中文参考手册》是一本全面介绍Grails框架的指南,旨在帮助开发者快速上手并深入理解Grails的各个核心概念和技术。Grails是一个基于Groovy语言的开源Web应用框架,它提供了高效的开发环境和强大的功能,使得...

    grails中文入门简介

    Grails是一个基于Groovy语言的全栈框架,它遵循约定优于配置的原则,并且紧密集成Spring和Hibernate等流行的Java库,简化了开发流程。Grails在IT行业中尤其受到重视,因为它能够帮助开发者快速搭建并部署基于MVC模式...

    grails-2.4.4.zip

    《Grails 2.4.4 框架深度解析》 Grails 2.4.4 是一个基于Java的开源Web应用框架,它利用Groovy语言的强大特性,为开发者提供了一种高效、灵活的开发环境。这个压缩包“grails-2.4.4.zip”包含了完整的Grails 2.4.4...

    grails-transfert-project:Grails转移项目

    【Grails转移项目】是一个基于Groovy语言和Grails框架的软件开发项目,它涉及到将一个现有的Grails应用从一个环境或平台转移到另一个环境或平台的过程。Grails是一个高效的、基于Java平台的开源Web应用程序框架,它...

Global site tag (gtag.js) - Google Analytics