mirror of
				https://gitea.invidious.io/iv-org/shard-kemal.git
				synced 2024-08-15 00:53:36 +00:00 
			
		
		
		
	Added documentation
This commit is contained in:
		
							parent
							
								
									2cbe54b624
								
							
						
					
					
						commit
						d0ea2f049c
					
				
					 1 changed files with 54 additions and 2 deletions
				
			
		
							
								
								
									
										56
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										56
									
								
								README.md
									
										
									
									
									
								
							|  | @ -37,9 +37,61 @@ dependencies: | ||||||
|     branch: master |     branch: master | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Status | ## Routes | ||||||
| 
 | 
 | ||||||
| Basic `get`, `put`, `post`, `patch`, `delete` and `head` routes can be matched, and request parameters can be obtained. | In Kemal, a route is an HTTP method paired with a URL-matching pattern. Each route is associated with a block: | ||||||
|  | 
 | ||||||
|  | ```ruby | ||||||
|  |   get '/' do | ||||||
|  |   .. show something .. | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   post '/' do | ||||||
|  |   .. create something .. | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   put '/' do | ||||||
|  |   .. replace something .. | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   patch '/' do | ||||||
|  |   .. modify something .. | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   delete '/' do | ||||||
|  |   .. annihilate something .. | ||||||
|  |   end   | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Context | ||||||
|  | 
 | ||||||
|  | Accessing the request context (query params, body, headers e.g) is super easy. You can use the context returned from the block: | ||||||
|  | 
 | ||||||
|  | ```ruby | ||||||
|  |   # Matches /hello/kemal | ||||||
|  |   get '/hello/:name' do |ctx| | ||||||
|  |     name = ctx.params["name"] | ||||||
|  |     "Hello back to #{name}" | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   # Matches /resize?width=200&height=200 | ||||||
|  |   get '/resize' do |ctx| | ||||||
|  |     width = ctx.params["width"] | ||||||
|  |     height = ctx.params["height"] | ||||||
|  |   end | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Content Type | ||||||
|  | Kemal uses *text/html* as the default content type. You can change it via the context. | ||||||
|  | 
 | ||||||
|  | ```ruby | ||||||
|  |   # Set the content as application/json and return JSON | ||||||
|  |   get '/user.json' do |ctx| | ||||||
|  |     kemal = {name: 'Kemal', language: 'Crystal'} | ||||||
|  |     ctx.set_content_type "application/json" | ||||||
|  |     kemal.to_json | ||||||
|  |   end | ||||||
|  | ``` | ||||||
| 
 | 
 | ||||||
| ## Thanks | ## Thanks | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue