DSpace 6.3 REST 405 Error when posting new collection

44 views
Skip to first unread message

Paul Warner

unread,
Dec 6, 2019, 4:07:02 AM12/6/19
to DSpace Technical Support
I am attempting to add a collection, and am getting a 405 Method Not Allowed error.  DSpace 6.3.  Thanks in advance for any suggestions! --Paul

In the output below, note the line: < Allow: DELETE,GET,OPTIONS,PUT

POST is not on the list!  Why?

According to the documentation, creation of a collection uses a POST request. 
https://wiki.lyrasis.org/display/DSDOC6x/REST+API#RESTAPI-Communities

Here is the server output:
*   Trying 127.0.0.1...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to 127.0.0.1 (127.0.0.1) port 8345 (#0)
> POST /rest/communities/cb69484b-1669-4832-b0aa-8acb902db531 HTTP/1.1
> User-Agent: curl/7.37.0
> Accept: */*
> Cookie: JSESSIONID=1041D8EFC72B7F930B6D3363406220FA
> Content-Type: application/json
> Content-Length: 526
} [data not shown]
* upload completely sent off: 526 out of 526 bytes
< HTTP/1.1 405 
< Allow: DELETE,GET,OPTIONS,PUT
< Content-Type: text/html;charset=utf-8
< Content-Language: en
< Content-Length: 1090
< Date: Fri, 06 Dec 2019 08:45:03 GMT
{ [data not shown]
100  1616  100  1090  100   526   334k   161k --:--:-- --:--:-- --:--:--  532k
* Connection #0 to host 127.0.0.1 left intact
<!doctype html><html lang="en"><head><title>HTTP Status 405 – Method Not Allowed</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 405 – Method Not Allowed</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> Method Not Allowed</p><p><b>Description</b> The method received in the request-line is known by the origin server but not supported by the target resource.</p><hr class="line" /><h3>Apache Tomcat/8.5.20</h3></body></html>


In anticipation of possible questions, here is the way I make the REST call:

I allow Tomcat access only on localhost, and my script is on the same machine.  I make the call with curl:

add_cmd = ['curl', '-v', '--cookie', self.sessionid, '--header', 'Content-Type: application/json', '-X', 'POST', item_link, '-d', json_str]

json_str = '''
{
        "copyrightText": "",
        "expand": [
            "parentCommunityList",
            "parentCommunity",
            "items",
            "license",
            "logo",
            "all"
        ],
        "introductoryText": "Willkommen zu der neue Sammlung 1!",
        "items": [],
        "license": null,
        "logo": null,
        "name": "Neue Sammlung 1",
        "shortDescription": "eine Sammlung via REST erzeugt",
        "sidebarText": "",
        "type": "collection"
    }
'''

Thanks,
Paul

Tim Donohue

unread,
Dec 6, 2019, 10:48:57 AM12/6/19
to Paul Warner, DSpace Technical Support
Hi Paul,

It looks (to me) like you are POSTing to the wrong endpoint (based on the docs you linked to)

Your POST looks like this:

POST /rest/communities/cb69484b-1669-4832-b0aa-8acb902db531

But, the correct POST to create a collection is:

POST /rest/communities/cb69484b-1669-4832-b0aa-8acb902db531/collections

So, the error you are seeing is correct.  You cannot POST to just the /communities/{uuid} endpoint...that endpoint only accepts GET (to get info about that Community), DELETE (to delete that community) and PUT (to update that community).  If you want to add a collection, you have to POST to the /collections subresource for that community.

Hopefully that helps!

Tim


From: dspac...@googlegroups.com <dspac...@googlegroups.com> on behalf of Paul Warner <paulw...@gmail.com>
Sent: Friday, December 6, 2019 3:07 AM
To: DSpace Technical Support <dspac...@googlegroups.com>
Subject: [dspace-tech] DSpace 6.3 REST 405 Error when posting new collection
 
--
All messages to this mailing list should adhere to the DuraSpace Code of Conduct: https://duraspace.org/about/policies/code-of-conduct/
---
You received this message because you are subscribed to the Google Groups "DSpace Technical Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dspace-tech...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dspace-tech/76c0d141-87d1-4ae4-aeb1-0d1aa0f2c75d%40googlegroups.com.

Paul Warner

unread,
Dec 9, 2019, 6:11:44 AM12/9/19
to DSpace Technical Support
Hi Tim,

Thanks for your very nice reply!  You saved me considerable time, but I am sorry to have wasted your time with such a dumb mistake.  :-(

Best regards,
Paul
To unsubscribe from this group and stop receiving emails from it, send an email to dspac...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages