Spec-Zone .ru
спецификации, руководства, описания, API
Spec-Zone .ru
спецификации, руководства, описания, API
Библиотека разработчика Mac Разработчик
Поиск

 

Эта страница руководства для  версии 10.9 Mac OS X

Если Вы выполняете различную версию  Mac OS X, просматриваете документацию локально:

Читать страницы руководства

Страницы руководства предназначаются как справочник для людей, уже понимающих технологию.

  • Чтобы изучить, как руководство организовано или узнать о синтаксисе команды, прочитайте страницу руководства для страниц справочника (5).

  • Для получения дополнительной информации об этой технологии, ищите другую документацию в Библиотеке Разработчика Apple.

  • Для получения общей информации о записи сценариев оболочки, считайте Shell, Пишущий сценарий Учебника для начинающих.



rest(n)                             A framework for RESTful web services                             rest(n)



____________________________________________________________________________________________________________

NAME
       rest - define REST web APIs and call them inline or asychronously

SYNOPSIS
       package require Tcl  8.5

       package require rest  ?1.0?

       ::rest::simple url query ?config? ?body?

       ::rest::get url query ?config? ?body?

       ::rest::post url query ?config? ?body?

       ::rest::head url query ?config? ?body?

       ::rest::put url query ?config? ?body?

       ::rest::delete url query ?config? ?body?

       ::rest::save name file

       ::rest::describe name

       ::rest::parameters url ?args?

       ::rest::parse_opts static required optional string

       ::rest::substitute string ?var?

       ::rest::create_interface name

       describe

       uplevel token token

       upvar body body

       uplevel token token

       uplevel token token

____________________________________________________________________________________________________________

DESCRIPTION
       There are 2 types of usage this package supports: simple calls, and complete interfaces. In an inter-face interface
       face you specify a set of rules and then the package builds commands which  correspond  to  the  REST
       methods.  These commands can have many options such as input and output transformations and data type
       specific formatting. This results in a cleaner and simpler script. On the other hand, a  simple  call
       is  easier  and  quicker  to implement but less featureful. It takes the url and a few options on the
       command and returns the result directly. Any formatting or checking is up  to  rest  of  the  script.
       Simple  usage  In  simple usage you make calls using http method procedures and then check or process
       the returned data yourself

       ::rest::simple url query ?config? ?body?

       ::rest::get url query ?config? ?body?

       ::rest::post url query ?config? ?body?

       ::rest::head url query ?config? ?body?

       ::rest::put url query ?config? ?body?

       ::rest::delete url query ?config? ?body?

       The above commands are all equivalent except for the http method used. If you  use  simple  then  the
       method should be specified as an option in the ?config? dict, otherwise it defaults to get. If a body
       is needed then the config dict must be present, however it may be empty.

           set appid APPID
           set search tcl
           set res [rest::get http://boss.yahooapis.com/ysearch/web/v1/$search [list appid $appid]]
           set res [rest::format_json $res]


           set res [rest::simple http://twitter.com/statuses/update.json  [list status $text]  {
                 method post
                 auth {basic user password}
                 format json
               }
           ]

       the options supported in the config dict are as follows headers cookie auth  format  method  content-type contenttype
       type  Interface  usage  An  interface to a REST API consists of a series of definitions of REST calls
       contained in an array. The array name becomes a namespace containing the defined commands. Each array
       element  defines  the  name of the call and takes the form of a dict, aka key/value pairs. These keys
       are the defined configuration options below.  After creating the definitions simply  call  rest::cre-ate_interface rest::create_interface
       ate_interface on the array to create the commands.

       package require rest

       set yweather(forecast) {
          url http://weather.yahooapis.com/forecastrss
          req_args { p: }
          opt_args { u: }
       }

       rest::create_interface yweather

       puts [yweather::forecast -p 94089]

       ::${name}::basic_auth u p ::${name}::set_static_args ?args?]

       ::rest::save name file
              saves a copy of the dynamically created procs to a file for later loading

       ::rest::describe name
              print a description of defined api calls

       ::rest::parameters url ?args?
              parse a url query string into a dict

       ::rest::parse_opts static required optional string

       ::rest::substitute string ?var?
              take a string and substitute real values for any option identifiers

       ::rest::create_interface name
              TOKENS  the  value  is  substituted  into  the  url  at  call  time.  tokens  in  the  form of
              %name:default_value% will be an optional argument with a default value.  url the target of the
              http request description a string which describes the call. used only for

       describe
              body  indicates  if arguments are required for the request body or not. should be one of none,
              optional, required, argument or mime_multipart. default is optional.  if argument is used then
              the  option  is parsed as a list where the second value is the name of a option. the body will
              then be used as the value for that option.  if the value is mime_multipart then  the  body  is
              required  and interpreted as each argument representing one part of a mime multipart document.
              each argument should be a 2 item list with the first being a list of header keys  and  values,
              and the second being the mime part body.

              set ygeo(parse) {
                  url http://wherein.yahooapis.com/v1/document
                  method post
                  body { arg documentContent }
              }
              ygeo::parse "san jose ca"
              # "san jose ca" will be interpreted as if it were specified as the -documentContent option


              set gdocs(upload) {
                  url http://docs.google.com/feeds/default/private/full
                  body mime_multipart
              }
              gdocs::upload [list {Content-Type application/atom+xml} $xml] [list {Content-Type image/jpeg} $filedata]

              method  The  HTTP method to call on the url. The default is GET.  copy this copies the defini-tion definition
              tion of a previously defined call. after copying you can override selected options by defining
              them  again.   unset  removes  the named option. useful when using copy of another definition.
              headers the value must be another dict containing header fields and their values. The  default
              is to not add any additional headers.  content-type Specifies the content type for the request
              data.  req_args a list of the required arguments. names ending  in  a  colon  will  require  a
              value.   opt_args  arguments  that may be present but are not required.  static_args arguments
              that are always the same. no sense in troubling the user with these. A leading  -  is  allowed
              but  not  required to maintain consistancy with the command line.  auth should be one of basic
              or sign. if basic is used you can configure basic auth with the proc auth_basic which takes  2
              arguments, the username and password.  if sign is specified then the value must be a list with
              the second element being the name of a proc which will be called to perform the request  sign-ing. signing.
              ing.

              set delicious(updated) {
                  url https://api.del.icio.us/v1/posts/update
                  auth basic
              }

              rest::create_interface flickr

              flickr::basic_auth username password


              set flickr(auth.getToken) {
                 url http://api.flickr.com/services/rest/
                 req_args { api_key: secret: }
                 auth { sign do_signature }
              }

              rest::create_interface flickr

              proc ::flickr::do_signature {query} {
                  # perform some operations on the query here
                  return $query
              }

              callback  If this option is present then the method will be created as an async call. An async
              call will return immediately with the value of the http token. The event loop must  be  active
              to  use  this option. The value of this option is the name of a proc which is invoked when the
              HTTP call is complete. The proc receives three arguments, the name of the  calling  procedure,
              the  status  of the result (one of OK or ERROR), and the data associated with the result.  the
              http request header is available via

       uplevel token token
              cookie a list of cookies to be passed in the http header. this is just a shortcut to the head-ers headers
              ers  option  input_transform  commands which take the variable $query and transform it in some
              manner before returning a new value. return value must be a  dict  which  will  be  passed  to
              http::formatQuery the request body is accessible via

       upvar body body
              format or result defines the format of the returned data. should be one of discard, raw, json,
              xml, or tdom. the default is auto which should auto detect between xml and json. rss  is  for-mated formated
              mated  as  a  special  case  of  xml.  pre_transform this value takes the form of a proc which
              should perform some action on $result and return a value. it is run on the result  before  the
              output (xml/json/etc) transformation is done.  the http request header is available via

       uplevel token token
              result  may  have the value xml, json, tdom, raw, or auto. the default is auto and should auto
              detect json or xml results and transform them into a tcl list. this is here  if  you  want  to
              specify  it  explicitly.  post_transform this value takes the form of a proc which should per-form perform
              form some action on $result and return a value. it is run  on  the  result  after  the  output
              transformation  but  before  returning  the  value to the calling procedure.  the http request
              header is available via

       uplevel token token
              check_result this value should be a list of 2 expressions either of which may  be  empty.  the
              first  expression is checks the OK condition, it must return true when the result is satisfac-tory. satisfactory.
              tory. the second expression is the error condition, it must return false unless  there  is  an
              error.


INCLUDED
       functional  but  incomplete  implementations  are included for the following services: flickr twitter
       yahoo boss yahoo weather google calendar facebook del.icio.us read the file  or  source  it  and  use
       describe for more information. also see the developers documentation on the respective sites.



rest                                                 1.0                                             rest(n)

Сообщение о проблемах

Способ сообщить о проблеме с этой страницей руководства зависит от типа проблемы:

Ошибки содержания
Ошибки отчета в содержании этой документации со ссылками на отзыв ниже.
Отчеты об ошибках
Сообщите об ошибках в функциональности описанного инструмента или API через Генератор отчетов Ошибки.
Форматирование проблем
Отчет, форматирующий ошибки в интерактивной версии этих страниц со ссылками на отзыв ниже.